我的应用程序中的一个子问题是我必须将图像发布到服务器,然后进行进一步处理。我目前正在通过将它们(jpeg压缩)编码为base64字符串发送图像,然后发布为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表示不正确吗?
提前致谢。
答案 0 :(得分:0)
如果你已经在文件中有它,没有理由将其解压缩然后重新压缩 - 这可能是导致错误的原因,因为每次压缩都是有损的并且会导致数据进一步丢失。如果您已有图像文件,请将其作为原始字节和Base64读取。