0
に損失することなく、ビットマップに
からへ
私の目的は、カメラonPictureTaken 変換する方法バイト[]品質
- キャプチャバイトビットマップにバイト[]に変換されBitmapFactory.decodeByteArray
- 保存
が、私はステップ2に問題があるビットマップは、何らかの理由でこのステップでは、PICTを作りますギザギザのエッジと品質の低下が含まれています。ステップ1を実行して、バイトをファイルに直接保存すると(ステップ2なし)、イメージがよりよく見えます。
品質を損なうことなくバイトをビットマップに変換するには、どうすればよいですか(手順2)。
@Override
public void onPictureTaken(byte[] byteData, Camera camera) {
String filePath = "PATH_TO_IMAGE_FILE";
//Save bytes directly
{
File pictureFile = new File(filePath + ".fromBytes");
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(byteData);
fos.close();
} catch (Exception error) {
Log.d("File not saved: " , error.getMessage());
}
}
//convert to bitmap -> convert to bytes -> then save
{
//I think this is where is loses quality ??
Bitmap decodedBitmap = BitmapFactory.decodeByteArray(byteData, 0, byteData.length);
//
ByteArrayOutputStream blob = new ByteArrayOutputStream();
decodedBitmap.compress(Bitmap.CompressFormat.PNG, 100, blob);
byte[] bitmapdata = blob.toByteArray();
File pictureFile = new File(filePath + ".fromBitmap");
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(bitmapdata);
fos.close();
} catch (Exception error) {
Log.d("File not saved: " , error.getMessage());
}
}
}
おかげ
"何らかの理由でこのステップでは、画像がギザギザと品質の損失が含まれています" - デフォルトではありません。あなたが試したことを示す[mcve]を提供してください。 – CommonsWare