与图像android的Base64错误

时间:2016-09-06 21:34:39

标签: android image base64

我的应用程序中的一个子问题是我必须将图像发布到服务器,然后进行进一步处理。我目前正在通过将它们(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表示不正确吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果你已经在文件中有它,没有理由将其解压缩然后重新压缩 - 这可能是导致错误的原因,因为每次压缩都是有损的并且会导致数据进一步丢失。如果您已有图像文件,请将其作为原始字节和Base64读取。