如何使Uri图像更小?

时间:2019-01-21 13:19:40

标签: java android image-processing image-resizing

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

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

我只需要将图像设置为几百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。谁能教我一步一步的指导。感谢所有帮助!

1 个答案:

答案 0 :(得分:0)

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