我正在尝试对 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/