私は解決すべき非常に興味深い問題を抱えています:
このような URL を持つ静的な Google マップ画像を取得しています。
この情報を取得するために、いくつかの方法を試しました。「リモート リソース」を ByteArrayOutputStream としてフェッチする、イメージをシミュレーターの SD に格納するなど...しかし、おかしくなるたびにIlegalArgumentExceptionが発生します。
私は常に 200 http 応答と正しい MIME タイプ ("image/png") を取得しますが、どちらの方法でも: 画像を取得してビットマップに変換するか、画像を SD に保存して後で読み取ります。同じ結果が得られます...ファイルは常に破損しています。
私はそれがエンコーディングの問題、または読み取り方法(これと同様)であると本当に信じています:
public static Bitmap downloadImage(InputStream inStream){
byte[] buffer = new byte[256];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while (inStream.read(buffer) != -1){
baos.write(buffer);
}
baos.flush();
baos.close();
byte[] imageData = baos.toByteArray();
Bitmap bi = Bitmap.createBitmapFromBytes(imageData, 0, imageData.length, 1);
//Bitmap bi = Bitmap.createBitmapFromBytes(imageData, 0, -1, 1);
return bi;
}
頭に浮かぶ唯一のものは imageData.length (応答では、コンテンツの長さは: 6005 ) ですが、私は本当にこれを理解できません。どんな助けも大歓迎です...