图片 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 读入。