android - 将图像编码为 Base64 不等于原始图像

标签 android image decode encode

我正在尝试对 ImageView 进行编码/解码,并且查看了 50 多个示例,但它仍然不起作用。

我首先做了一件简单的事情:

1) 我正在使用来自http://codebeautify.org/base64-to-image-converter#的简单base 64数据

2) 我将它放入 mysql 数据库的 blob 字段(托管在远程服务器中)

3)在android中,我通过网络服务正确获取它,对其进行解码并在 ImageView 中显示

public static Bitmap decodeBase64(String input)
{
    byte[] decodedByte = Base64.decode(input.getBytes(), Base64.DEFAULT);
    return BitmapFactory.decodeByteArray(decodedByte, 0, decodedByte.length);
}

(到目前为止一切顺利)

4) 我正在对 ImageView 中的内容进行编码(放置在步骤 3 中)并使用生成 Base64 代码

    imageGrupo.buildDrawingCache();
    Bitmap bitmap = imageGrupo.getDrawingCache();
    ByteArrayOutputStream stream=new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);
    byte[] image=stream.toByteArray();
    finalImagemStr = Base64.encodeToString(image, 0);

5) 如果我将生成的 Base64 与我在 3 中收到的 Base64 进行比较,它们是不一样的。

他们应该是对的吗?

6) 当将4)中生成的base64字符串放入远程数据库并再次读取时,它会显示

  java.lang.IllegalArgumentException: bad base-64

我现在快要疯了......有什么想法吗?

谢谢 问候

最佳答案

试试我的solution它解释了如何将位图编码为 Base64 并成功将 Base64 解码回位图。如果您需要精确的原始图像,您可以跳过代码中的缩放图像部分。

关于android - 将图像编码为 Base64 不等于原始图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35395023/

相关文章:

objective-c - 如何在 objective-c iphone 中解码 URL?

ios - 哪个是在 iOS 中解码 Jpeg 最快的库?

安卓复制权限

android - Dialog.getCancelable() 不存在

jquery - 将图像添加到 dom 并执行 .load

c# - 在 C# 中为图像添加颜色

jquery - 随机图像网格问题

android - 我想从我的 PHP 应用程序向我的 android 应用程序发送通知

android - 如何知道应用程序是从 google play 还是侧载安装的?

android - 将imageview转换为base64并将其存储到mysql中以及如何在Android中解码它