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形式であることを確認しました。しかし、デコード関数が実行されると、null値が残ります。私の最初の推測は、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 に答える