图片 Base64 错误 android
Base64 error with image android
我的应用程序中的一个子问题是我必须 post 将图像发送到服务器,并在服务器上进行进一步处理。我目前通过将图像编码(jpeg 压缩)为 base64 字符串来发送图像,然后 posting 为 json。
然而,这导致了错误的结果。在调试时,我意识到 android 形成的图像的 base64 表示不正确。 (我通过与 linux 中 base64 实用程序生成的图像的 base64 表示形式进行比较来测试这一点)。
我获取图像的 base64 表示的代码如下
// get base64 encoded image from bitmap
public String getEncodedImage(Bitmap bmp) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
return encodedImage;
}
我正在将位图传递给上面的函数,它是作为
获得的
final Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
有人可以提出为什么此代码可能导致某些图像的 base64 表示不正确的原因吗?
提前致谢。
如果文件中已有它,则没有理由解压缩然后重新压缩它 - 这可能是您出错的原因,因为每次压缩都是有损的,会导致进一步的数据丢失。如果您已经有图像文件,请将其作为原始字节和 Base64 读入。
我的应用程序中的一个子问题是我必须 post 将图像发送到服务器,并在服务器上进行进一步处理。我目前通过将图像编码(jpeg 压缩)为 base64 字符串来发送图像,然后 posting 为 json。 然而,这导致了错误的结果。在调试时,我意识到 android 形成的图像的 base64 表示不正确。 (我通过与 linux 中 base64 实用程序生成的图像的 base64 表示形式进行比较来测试这一点)。
我获取图像的 base64 表示的代码如下
// get base64 encoded image from bitmap
public String getEncodedImage(Bitmap bmp) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
return encodedImage;
}
我正在将位图传递给上面的函数,它是作为
获得的final Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
有人可以提出为什么此代码可能导致某些图像的 base64 表示不正确的原因吗?
提前致谢。
如果文件中已有它,则没有理由解压缩然后重新压缩它 - 这可能是您出错的原因,因为每次压缩都是有损的,会导致进一步的数据丢失。如果您已经有图像文件,请将其作为原始字节和 Base64 读入。