我以前看过这个问题,但没有一个解决方案真正适合我的情况。
除了节省一些空间外,我还想节省从 Firebase 存储中上传/下载内容的时间。由于 firebase 使用图像 uri,我想不出一个合适的方法来实现这一点。
一个解决方案可能是创建一个“副本”到缓存或一些临时文件以调整大小、裁剪等,然后将该副本上传到存储。但是我不知道这是否是一个好方法,而且我真的不知道该怎么做。
您能推荐一些方法吗?我真的很感激例子。
最佳答案
您可以使用一些定制的库
来压缩图像和视频等媒体文件。例如:Compressor 是压缩图像的好库:https://github.com/zetbaitsu/Compressor
要压缩图像并上传到 Firebase Storage
,您可以简单地执行以下操作:
try {
Bitmap bitmap = new Compressor(this)
.setMaxHeight(200) //Set height and width
.setMaxWidth(200)
.setQuality(100) // Set Quality
.compressToBitmap(file);
} catch (IOException e) {
e.printStackTrace();
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
final byte[] bytes = baos.toByteArray();
然后在调用和设置UploadTask
时:
UploadTask uploadTask = StorageReference.putBytes(bytes);
当然还有一些其他的库
,比如:
SiliCompressor
https://github.com/Tourenathan-G5organisation/SiliCompressor
关于java - 如何在将图像上传到 Firebase 之前调整图像大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48562587/