0

我使用以下代码从我的 SQLite 数据库中取回 Blob 并取回位图。我的问题是重建的位图比原始图片(输入)大。似乎我的 BitmapFactory.Options 不起作用,但我不知道出了什么问题,我也没有收到错误。这段代码有什么问题?

byte[] blob = contact.getMP();
ByteArrayInputStream inputStream = new ByteArrayInputStream(blob);
BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
bmpFactoryOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
bmpFactoryOptions.inScaled = false;
bmpFactoryOptions.outHeight = 240;
bmpFactoryOptions.outWidth = 320;
Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, bmpFactoryOptions);


try {
FileOutputStream out = new FileOutputStream("mnt/sdcard/test5.png");                            bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
} catch (Exception e) {
e.printStackTrace();
}

当我检查输出时,我的 320 x 240 图片是 427 x 320。我不想使用 Bitmap.createScaledBitmap,因为它会破坏质量。

4

1 回答 1

0

你必须通过decodeStream才能工作

Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, bmpFactoryOptions);
于 2013-05-19T14:01:01.597 回答