将GIF数据分配给位图对象



我在很多地方读到Android不支持原生gif。因此,我的代码在BitmapFactory.decodeByteArray上失败了。这是我的代码:

URL url = new URL(imgURL); //you can write here any link
HttpURLConnection ucon = (HttpURLConnection)url.openConnection();
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);          
ByteArrayBuffer baf = new ByteArrayBuffer(5000);
int current = 0;
  while ((current = bis.read()) != -1) {
  baf.append((byte) current);
}
image = BitmapFactory.decodeByteArray(baf.toByteArray(), 0, baf.toByteArray().length);

使用调试器,我确认头数据加载正确,并且是GIF格式的。但是,一旦解码函数运行,我就会得到一个空值。我的第一个猜测是,我需要做一个GIF->PNG转换。我该怎么做?还有其他选择吗?

GifView类http://code.google.com/p/android-gifview/工作良好。该项目是为动画gif设计的,但它也适用于静态gif。

因此,尽管Android抱怨GIF和解码失败,但我认为问题在于我的代码中的其他故障。我所做的更改使代码现在可以工作。

  1. 确保我关闭了输入流
  2. 删除了一个可能导致无限循环和线程生成的事件(这是我从HTML源中提取GIF文件列表的解析规则的失败)
  3. 确保我在List对象中存储的Bitmap文件在使用之前始终正确地进行了广播

我通过这篇几乎完全相同的帖子找到了帮助和细节。在这个问题上有一些链接。

最后,我根本没有触摸我的位图或InputStream对象,数据被正确接收(根据我对GIF标头字节的确认),但后来使用数据时失败了。

相关内容

  • 没有找到相关文章

最新更新