2016-03-21 15 views
0

午後すべて。ImageViewにPNGバイト配列を表示

モバイルアンドロイドアプリケーションでImageViewにPNG画像を表示しようとしています。イメージは、データベースからバイト配列の形で提供されます。

私はアンドロイドの開発に慣れているので、これについて正しい方法についてはわかりません。私はファイルを保存し、URIを使用して画像を設定しようとしましたが、成功しませんでした。

File tempFile = File.createTempFile("NewsImage", lastNewsDTO.ImageExt, null); 
    FileOutputStream fos = new FileOutputStream(tempFile); 
    fos.write(lastNewsDTO.Image) 
    ((ImageView)rootView.findViewById(R.id.ivNewsImage)).setImageURI(Uri.fromFile(tempFile)); 

私は正しい行にあるのでしょうか、それとも良い方法がありますか?

お読みいただきありがとうございます。

答えて

0

byte[]にPNGが含まれていると言えば、BitmapFactory and its decodeByteArray() methodを使用してBitmapに変換してください。そして、call setImageBitmap() on the ImageViewにはそれがBitmapです。

ディスクに書き込む必要のないものをディスクに書き込まないでください。

+0

コメントCommonsWareのおかげで、Harshadに私の返事を参照してください。以前はその方法を試していましたが、ディスクに書き込むのも面倒でした。 – horHAY

+0

@horHAY: "ビットマップインスタンスがデバッグしてそのコード行をステップ実行すると、ビットマップインスタンスはnullです" - それは明らかに有効なPNGではありません。 – CommonsWare

+0

イメージとそのPNGが確実に追加されましたか? – horHAY

0

簡単な使用この:

byte[] data; 

public static void setImageViewWithByteArray(ImageView view, byte[] data) { 
     Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 
     view.setImageBitmap(bitmap); 
    } 
+0

Harshadに感謝してくれてありがとう。上記のコードの前にこのメソッドを試しましたが、成功しませんでした。 Bitmapインスタンスは、そのコード行をデバッグしてステップ実行するとnullになります。また、この問題があるかどうかわからない場合は、C#を使用してデータベースにイメージが追加されましたが、ByteArrayにはまったく影響がありますか?乾杯。 – horHAY

関連する問題