当我将图像文件转换为 base64 时,图像大小增加了 3 倍,谁能解释一下??
when i am converting image file into base64 size of image increased 3 times, can anyone explain ??
当我将图像文件转换为 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);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, 流);
和
str = Base64.encodeToString(图片, Base64.NO_WRAP);
是您必须更改的行...
100 表示此处的压缩率,您可以根据需要更改。一般来说,它可能在 0 - 100 之间变化。
如果您想将数据包装为默认提供的任何编码格式,则可以相应地更改 Base64.NO_WRAP 。
只需编写 Base64。然后按 ctrl + Space 查看哪个选项更适合您。
您没有对原始 jpg 文件进行编码。如果这样做,base64 编码的字符串将比原始文件多 30% 字节。
相反,您将 jpg 加载到位图中,然后让位图将其压缩到内存中的不同 jpg 文件。第二个已经比原来的大很多了。您可以轻松检查。
所以不要使用中间位图,而是直接对原始文件的字节进行编码。
当我将图像文件转换为 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);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, 流);
和 str = Base64.encodeToString(图片, Base64.NO_WRAP);
是您必须更改的行... 100 表示此处的压缩率,您可以根据需要更改。一般来说,它可能在 0 - 100 之间变化。 如果您想将数据包装为默认提供的任何编码格式,则可以相应地更改 Base64.NO_WRAP 。 只需编写 Base64。然后按 ctrl + Space 查看哪个选项更适合您。
您没有对原始 jpg 文件进行编码。如果这样做,base64 编码的字符串将比原始文件多 30% 字节。
相反,您将 jpg 加载到位图中,然后让位图将其压缩到内存中的不同 jpg 文件。第二个已经比原来的大很多了。您可以轻松检查。
所以不要使用中间位图,而是直接对原始文件的字节进行编码。