java - 如何在不压缩图像的情况下将图像转换为Base64字符串?

标签 java android image

每次我更新同一张图片时,图像压缩方法都会降低图像质量。

 public String BitMapToString(Bitmap bitmap) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
    byte[] b = baos.toByteArray();
    base64Image = Base64.encodeToString(b, Base64.DEFAULT);
    return base64Image;
}

我不想一次又一次地压缩图像。请提出一些建议。

最佳答案

首先使用PNG压缩不会损失图像质量。

如果你想在不压缩的情况下获取字节,你可以尝试以下方法:

ByteBuffer buffer = ByteBuffer.allocate(bitmap.getRowBytes() * bitmap.getHeight());
bitmap.copyPixelsToBuffer(buffer);
byte[] data = buffer.array();

从字节数组中获取位图:

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(ByteBuffer.wrap(data));
return bitmap;

关于java - 如何在不压缩图像的情况下将图像转换为Base64字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46679736/

相关文章:

php - 将许多(2000 多张)图像上传到服务器的最佳实践

Android map 实用程序 : images from URL

android - 安全修复 : javax.net.ssl.SSLPeerUnverifiedException:没有对等证书

image - ASP.NET MVC3 : Image loading through controller

java - 为什么在 Kotlin 中启动新的 Android Activity 需要 Java 类?

android - 如何在按下第一个字符后显示 "Clear button"并在文本为 ""时隐藏它?

html - img 后的错误位置文本

java.lang.UnsupportedClassVersionError : Unsupported major. 次要版本 51.0(无法加载类 frontend.listener.StartupListener)

java.lang.NoClassDefFoundError : org/apache/spark/sql/SparkSession 错误

java并发 - 保持某些任务之间的顺序