我使用以下代码从我的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,因为它会影响质量。
答案 0 :(得分:0)
你必须传递给decodeStream
才能工作
Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, bmpFactoryOptions);