【问题标题】:when i am converting image file into base64 size of image increased 3 times, can anyone explain ??当我将图像文件转换为 base64 大小的图像增加了 3 倍时,谁能解释一下?
【发布时间】:2017-09-12 19:29:17
【问题描述】:

当我将图像文件转换为 base64 大小的图像增加了 3 倍时,谁能解释一下? 理想情况下应该增加 30% 到 40%。

Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] image = stream1.toByteArray();
str = Base64.encodeToString(image, Base64.NO_WRAP);

【问题讨论】:

    标签: android base64 image-compression


    【解决方案1】:

    您没有对原始 jpg 文件进行编码。如果你这样做了,base64 编码的字符串将比原始文件多 30% 字节。

    相反,您将 jpg 加载到 Bitmap 中,然后让 Bitmap 将其压缩到内存中的不同 jpg 文件中。这第二个已经比原来的大得多了。您可以轻松检查。

    所以不要使用中间位图,而是直接对原始文件的字节进行编码。

    【讨论】:

    • 如何在没有中间位图的情况下将文件转换为直接base64??
    • 循环读取文件的字节,并将它们放入字节数组中。然后像现在对数组图像一样对数组进行编码。但是你做了我建议的检查吗?请提供准确的数字。
    【解决方案2】:

    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, 流);

    和 str = Base64.encodeToString(image, Base64.NO_WRAP);

    是您必须更改的行... 100 在这里表示您可以根据需要更改的压缩比。一般来说,它可能在 0 到 100 之间变化。 如果要将数据包装为默认提供的任何编码格式,则可以相应地更改 Base64.NO_WRAP。 只写Base64。然后按 ctrl + Space 看看哪个选项更适合你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 2017-05-27
      • 2017-08-30
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 2013-05-29
      相关资源
      最近更新 更多