我是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。谁能教我一步一步的指导。感谢所有帮助!