SQLite DataBase
に画像を保存します。 BLOB
とString
を使用して保存しようとしましたが、どちらの場合も画像を保存して取得できますが、BitmapFactory.decodeByteArray(...)
を使用してBitmap
に変換するとnullを返します。
このコードを使用しましたが、nullを返します
Bitmap bitmap = BitmapFactory.decodeByteArray(blob, 0, blob.length);
これを試してください:
Bitmap bitmap = BitmapFactory.decodeFile("/path/images/image.jpg");
ByteArrayOutputStream blob = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, 0 /* Ignored for PNGs */, blob);
byte[] bitmapdata = blob.toByteArray();
bitmapdata
がバイト配列の場合、Bitmap
の取得は次のように行われます。
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);
デコードされたBitmap
を返します。画像をデコードできなかった場合はnull
を返します。
Uttamの答えは私にはうまくいきませんでした。私がやったとき、私はただnullになりました:
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata, 0, bitmapdata.length);
私の場合、ビットマップデータにはピクセルのバッファーしかないため、関数decodeByteArrayが幅、高さ、色のビットのどれを使用するかを推測することはできません。だから私はこれを試してみましたが、うまくいきました:
//Create bitmap with width, height, and 4 bytes color (RGBA)
Bitmap bmp = Bitmap.createBitmap(imageWidth, imageHeight, Bitmap.Config.ARGB_8888);
ByteBuffer buffer = ByteBuffer.wrap(bitmapdata);
bmp.copyPixelsFromBuffer(buffer);
https://developer.Android.com/reference/Android/graphics/Bitmap.Config.html でさまざまな色のオプションを確認します