Android/画像/画像デコードエラー対応
提供: 初心者エンジニアの簡易メモ
画像デコード時に以下エラーが発生したときの対応
decoder->decode returned false
InputStreamのバグらしく、以下URLにある通りカスタムInputStreamを作り対応する。
http://code.google.com/p/android/issues/detail?id=6066
http://ameblo.jp/orangeapple1/entry-10900358898.html
- Client.java
import com.google.code.FlushedInputStream; // decoder->decode returned falseエラー対策 Bitmap bitmap = BitmapFactory.decodeStream(new FlushedInputStream(input)); // Bitmap bitmap = BitmapFactory.decodeStream(input);
- com/google/code/FlushedInputStream.java
import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; /** * FlushedInputStream * Bitmapデコード時に"decoder->decode returned false"のエラーが発生する対策用のFilterInputStream * http://code.google.com/p/android/issues/detail?id=6066 */ public class FlushedInputStream extends FilterInputStream { public FlushedInputStream(InputStream inputStream) { super(inputStream); } public long skip(long n) throws IOException { long totalBytesSkipped = 0L; while (totalBytesSkipped < n) { long bytesSkipped = in.skip(n - totalBytesSkipped); if (bytesSkipped == 0L) { int Byte = read(); if (Byte < 0) { break; // we reached EOF } else { bytesSkipped = 1; // we read one byte } } totalBytesSkipped += bytesSkipped; } return totalBytesSkipped; } }