首页 > 解决方案 > 如何使 Uri 图像更小?

问题描述

我是java新手,我正在努力研究如何在将图像上传到firebase之前调整图像大小。

我已经阅读并尝试了堆栈中的许多建议,但我没有任何工作要做。

我只需要图像大小为 100 KB。该图像将仅用于名称旁边的个人资料图片 (40dp*40dp)。所以质量不需要那么好。所以我不是在寻找任何花哨的压缩,只是一种减少图像的简单方法。就像减少宽度和高度一样,只能说 80dp*(纵横比)。

我从这样的用户电话中获取图像:

private void openFileChooser() {

    Intent intent = new Intent();

    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, PICK_IMAGE_REQUEST);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);

     if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {

         imageURI = data.getData();

        Picasso.with(this).load(imageURI).fit().centerCrop().into(imgView);

    }
}

并将其上传到数据库:

 private void uploadFile() {

    if (imageURI != null && getUserId != null) {

        final StorageReference ref = mStorage.child(getUserId);


        UploadTask uploadTask = ref.putFile(imageURI);
 }

我尝试了这样的扩展,但没有帮助

 private void uploadFile() {

    if (imageURI != null && getUserId != null) {

        final StorageReference ref = mStorage.child(getUserId);

        Uri test = new Compressor() {
            public Uri compressToFile(Uri imageURI) {
                return imageURI;
            }

            @Override
            public String getMessageEncoding() {
                return null;
            }

            @Override
            public OutputStream compress(OutputStream os) throws IOException {
                return null;
            }
        }.compressToFile(imageURI);


        UploadTask uploadTask = ref.putFile(test);
} 

我发现的所有答案都没有 Uri 的图像,所以我有点困惑。我可能需要该图像作为 Firebase 的 Uri。任何人都可以向我展示如何执行此操作的分步指南。感谢所有帮助!

标签: javaandroidimage-processingimage-resizing

解决方案


您可以为此目的使用 Imagecompressor 库 https://github.com/zetbaitsu/Compressor


推荐阅读