java - 如何在将图像上传到 Firebase 之前调整图像大小?

标签 java android image firebase firebase-storage

我以前看过这个问题,但没有一个解决方案真正适合我的情况。

除了节省一些空间外,我还想节省从 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/

相关文章:

java - 整数和长整型转换

java - 如何重用方法?

android - 使用 fragment 更改为横向时 map 行为会发生变化

java - 每秒运行一次的安全 Whileloop

javascript - 无法看到 cropper js 的预览

java - 在 Java 中创建动态给定类的实例

android - 更改android webview输入框的光标拖动颜色

linux - 从 Linux 命令行查找 PDF 中的颜色空间

html - CSS 使用 List-Style-Image 调整文本在 HTML 列表中的位置

java - 我怎样才能在UTC java中获得今天的具体时间