1

我在很多地方都读到过 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 转换。我怎样才能做到这一点?还有其他选择吗?

4

2 回答 2

1

http://code.google.com/p/android-gifview/上的 GifView 类运行良好。该项目适用于动画 gif,但它也适用于静态 gif。

于 2012-08-23T21:43:15.947 回答
0

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

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

我通过这篇帖子找到了帮助和详细信息,这是一个几乎相同的问题。有一些链接可以解决这个问题。

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

于 2012-08-26T04:43:40.343 回答