- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个应用,用户可以在其中创建事件并从其图库上传图像并将其上传到 FirebaseStorage。一切工作正常,但图像尺寸确实很大,我想优化加载/下载过程。我已经尝试过这个:
// Get the data from an ImageView as bytes
imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();
UploadTask uploadTask = mountainsRef.putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
// taskSnapshot.getMetadata() contains file metadata such as size, content-type
Uri downloadUrl = taskSnapshot.getDownloadUrl();
}
});
并设置bitmap.compress(Bitmap.compressFormat.JPEG, 50, baos);
这是可行的,但这基本上使每张图像都变得丑陋。有没有办法(如果可能的话,有指南)在不完全破坏质量的情况下减小图像的尺寸?
最佳答案
What helped me was i scaled down the image resolution after converting the captured image to 1280 x 720 and then it dropped my file size by more that 50%.
Here is an example method.
/**
* Compress the file and return the compressed photo
*
* @return photoFile
*/
public File PhotoCompressor(File PhotoFile) {
Bitmap b = BitmapFactory.decodeFile(photoFile.getAbsolutePath());
int originalWidth = b.getWidth();
int originalHeight = b.getHeight();
int boundWidth = COMPRESSED_PHOTO_WIDTH;
int boundHeight = COMPRESSED_PHOTO_HEIGHT;
int newWidth = originalWidth;
int newHeight = originalHeight;
//check if the image needs to be scale width
if (originalWidth > boundWidth) {
//scale width to fit
newWidth = boundWidth;
//scale height to maintain aspect ratio
newHeight = (newWidth * originalHeight) / originalWidth;
}
//now check if we need to scale even the new height
if (newHeight > boundHeight) {
//scale height to fit instead
newHeight = boundHeight;
//scale width to maintain aspect ratio
newWidth = (newHeight * originalWidth) / originalHeight;
}
Log.i(TAG, "Original Image:" + originalHeight + " x" + originalWidth);
Log.i(TAG, "New Image:" + newHeight + " x" + newWidth);
try {
Bitmap out = Bitmap.createScaledBitmap(b, newWidth, newHeight, true);
FileOutputStream fOut;
fOut = new FileOutputStream(photoFile);
out.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
fOut.flush();
fOut.close();
b.recycle();
out.recycle();
} catch (OutOfMemoryError exception) {
Log.e(TAG, "OutofMemory excpetion" + exception);
exception.printStackTrace();
} catch (FileNotFoundException e) {
Log.e(TAG, "File not found excpetion" + e);
e.printStackTrace();
} catch (IOException e) {
Log.e(TAG, "IO exception excpetion" + e);
e.printStackTrace();
}
return photoFile;
}
关于java - 上传到 FirebaseStorage 之前进行图像压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694328/
我有以下代码,以便在我从图库中选择/拍照后在 ImageView 中显示图像: @Override public void onActivityResult(int requestCode, int
过去两天我收到此错误,我不知道如何解决它,我需要在我使用 RecycleView 的 Android 应用程序中获取存储在 Firebase 中的数据(图像)作为 ListView ; 这是主类: p
我正在使用 Firebase 在 Android 上制作一款社交应用。每个用户最多可以上传三张图像,这些图像使用 FirebaseStorage 存储。 Activity where users ad
没有错误我只是想检查回调是否有效。但事实并非如此。这是针对 AngularFireStorage 的,在我上传图像后,我打算获取 downloadURL,但问题是,用于 observable 的管道不
我想在 firebase 存储中保存一张使用 github 中的 CropImage 库裁剪的照片。一切正常,直到我按下裁剪按钮。这就是我从 Crop Image Activity 获取和存储图像的方
我正在尝试从 firebase 显示我的用户用户名,但是这行代码: self.userNameOut.text! = DataSnapshot.value!["username"] as? Strin
感谢 Firebase 的重大更新,我将我的应用程序的图像托管从 AWS 切换到 Firebase 中现在包含的 GS Storage。我已经导入了所有必要的 pod,这个应用程序已经成功地将图像上传
我有一个应用,用户可以在其中创建事件并从其图库上传图像并将其上传到 FirebaseStorage。一切工作正常,但图像尺寸确实很大,我想优化加载/下载过程。我已经尝试过这个: // Get the
我正在尝试提取已添加到 Android 设备上的 Firebase 存储中的图像。每次运行时,我都会从 onFailureListener() 得到这个错误 E/StorageException(96
我正在尝试使用 Firebase 云存储和实时数据库。在第一个中,我上传了一张图片,然后我尝试在后者中保存 downloadUrl。在将 Firebase pod 更新到 5.0.0 以使用 MLKi
我想在我的 Flutter 应用程序中显示存储在 Firbase 存储中的图像,但我正在处理这个问题。我按照关于此 answer 的说明进行操作但是我的 ref() 总是这样: 我创建这个方法只是为了
是否可以使用 streamBuilder 从 Firebasestorage 获取图像?或任何其他方式获取从 google Firesbase 存储加载的图像的 ListView ? 预先感谢您的回答
我正在使用 FirebaseStorage 下载多个文件。下载文件的任务在一个 WHILE 循环中。 WHILE 循环位于另一个 FOR 循环内。问题是我希望 WHILE 循环仅在所有下载完成后才继续
我在将 File 对象形式的 jpg 图像上传到 FirebaseStorage 时遇到问题。错误发生在 StorageUploadTask uploadTask = reference.putFil
Modules Issue (Xcode): Declaration of 'FIRStorageHandle' must be imported from module 'FirebaseStora
我对 Firebase 有疑问。我通过 youtube 上的一段视频学习了如何从 firebase 中删除数据和图像。我有一个函数可以从 firestore 中删除图像,但我不能使用 getRefer
我正在使用 Firebase Auth/Storage/Firestore 创建一个新的注册过程。 这里是新注册的过程(先用Auth认证,在Firestore中注册返回的User,有图片就保存URL)
我正在以这种方式使用 Firebase 存储下载图像: StorageReference storageReference = FirebaseStorage.getInstance().getRef
这个问题在这里已经有了答案: Delete Folder from Firebase Storage using Google Cloud Storage (2 个答案) 关闭 5 年前。 我想使用
我正在尝试将图片上传到 Firebase 并下载包含元数据的网址,我尝试了多种方法来修复它,但似乎无法获取它。我已成功将图像上传到存储,但无法获取 url 并将其发送到数据库。这是我到目前为止得到的代
我是一名优秀的程序员,十分优秀!