如何在Android中将Base64转换为位图

3
我希望能够将从Base64解码的字节数组显示在Android的ImageView上。我从数据库中获取字节数组:
 byte[] blob = c.getBlob(1); 
     //I do this to see if the cursor is empty

     if(blob != null) { 

         byte[] decodedString = Base64.decode(blob, Base64.DEFAULT);
         Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
         mImage.setImageBitmap(decodedByte); 

        } 
     else { 
          mImage.setImageResource(R.drawable.pear); 
        }  

如果我按照这种方式将blob转换为字符串并打印出来,它看起来与数据库中的相同。如果我尝试解码错误的代码,会出现“bad base64”异常,因此base64似乎是正确的。那么问题应该在于将其转换为图像。我已经进行了很多研究,上述方法似乎是一种常见的方法。我是否遗漏了什么重要的东西?
编辑:这是我想要转换为图像的blob之一,它在数据库中的样子就是这样。
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

你怎样将位图导入数据库呢?也许是在这个过程中发生了损坏。能否在此发布其中的一个字符串? - Vlad
1个回答

1

您发布的数据似乎已经损坏。使用base64命令行实用程序对其进行解码,生成了一个类似于PNG文件但实际上并不是的东西:

$ base64 -d input.txt > output.png
$ file output.png 
output.png: PNG 图像, 805314562 x 284378236, 0 位灰度,
$

1
好的。我会联系数据库提供商,看看能否获取正确编码的PNG文件。感谢您的帮助,我不知道还有一个base64命令行实用程序。 - kakka47
你是对的Joachim。数据被操纵成适合iPhone应用程序的方式,因此它以png格式呈现,但有一个“扭曲”。我得到了一个新版本的数据库,其中blob是纯粹的blob,上面使用的代码可以不加修改地工作。 - kakka47

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接