DNG RAW画像ファイルからサムネイル画像を取得してAndroidで表示しようとしています。必要なすべてのタグを正常に読み取り、値を取得して画像を形成しました。しかし、私は以前に画像を扱ったことがないので、ビットマップの作成で問題に直面しています。生の画像タグを読み取ることで、次の値を取得しました。
画像の幅 = 320
画像の高さ = 216
圧縮 = 1 (1 = 非圧縮)
ピクセルあたりのサンプル = 3
サンプルごとのビット = 8
画像開始オフセット = 7044
色の解釈 = 2 (2=ARGB_8888)
画像データを取得するには、私のコードは次のとおりです。
int uBitsPerPixel = samplePerPixel * bitPerSample;
int lengthOfBitmap = imageLength * imageWidth * uBitsPerPixel/8;//size of image data
InputStream fis = new FileInputStream(file);
byte[] img = new byte[lengthOfBitmap];
fis.skip(startOffset);//image data starting position
fis.read(img, 0, lengthOfBitmap);
fis.close();
上記のコードから、圧縮されていない画像データのバイト配列を取得しています。しかし、ビットマップをヌルとして取得して、ビットマップに変換しています。
BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
bmpFactoryOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
bitmap = BitmapFactory.decodeStream(inputStream, null, bmpFactoryOptions);
では、どうすればビットマップを適切に作成できますか? 助けてくれてありがとう。