2012-06-12 77 views
0

当我尝试创建带解码字符串的位图时,我得到一个从.net Web服务的base64Binary中编码的图像,我得到null。任何想法为什么? thx为您的帮助! :dAndroid:BitmapFactory.decodeByteArray返回null解码base64图像

  1. 我敢肯定响应字符串不为空,我测试了它和它的长度为28000。我也查了一个在线解码器的内容和它返回我需要的图像。

  2. 我使用的是Android原生的Base64图书馆使用bitmapfactory

  3. 我用Ksoap2来获得图像的base64字符串

  4. 这是Android 2.2的谷歌API

之前对其进行解码代码如下:

String serverResponse = "" + result.get(0); 

byte[] decodedString = Base64.decode(serverResponse, Base64.DEFAULT); 

imgMap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 

ImgMap是位图,它总是变为空,我做错了什么?

我得到的说,一个日志条目:

TAG: SKIA  
TEXT: ---SkImageDecoder:: Factory returned null 

这是decodedString的样子:

06-13 03:09:54.957: D/CODED(491): SIZE: 22486 
06-13 03:09:55.008: D/CODED(491): Content: first 200 positions of the array: 737342012400068796785786984327110111410997110121068656783328411111110810710511632737305048495058485358505132494858515158525200000000000000000000000000000000000000000000000000000000000000000250-20401000000001301000-22900113010003930021301000100031301000400061301000000071 
+0

“decodedString”是否包含图像? – Christine

+0

它应该包含代表图像的base64解码字节,它不是空的 – Matthew

+0

“应该”与“is”不一样。您可以在调试应用程序时检查它,也可以将字符串写入日志输出。 – Christine

回答

1

我想我想通了。

看起来像响应base 64字符串是TIFF图像,android不支持该格式,因此Factory不会将其识别为图像并停止解码过程。

+0

你是如何克服这个问题的,我有同样的情况? – Byron

+0

你好拜伦,有人建议这[链接](http://stackoverflow.com/questions/11035377/android-is-it-possible-to-convert-a-tiff-image-to-jpg-png/11035742#11035742 ),即使在最后我通过改变服务器端图像的格式来使用不同的方法。 – Matthew

+0

嗨马修,我也跟着同样的链接,并将libtif添加到我的应用程序。我现在面临的问题是,当我尝试将它转换为位图时,我得到了OutOfMemory。 LIBTIF实际上是在抛出异常。感谢您的回复 – Byron