2013-05-19 143 views
0

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

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×240像素为427 X 320。我不希望,因为它打乱了质量使用Bitmap.createScaledBitmap。

+0

?在这段代码中,我没有看到它。 – Simon

+0

它应该被用在blob上,该blob被改为位图(代码的最后一行)。 – user1393500

+0

但是您没有将选项作为参数传递。黑带已经显示出正确的签名。 http://developer.android.com/reference/android/graphics/BitmapFactory.html#decodeStream(java.io.InputStream,android.graphics.Rect,android.graphics.BitmapFactory.Options) – Simon

回答

0

你必须传递给decodeStream为了你在哪里使用选项工作

Bitmap bitmap = BitmapFactory.decodeStream(inputStream, null, bmpFactoryOptions); 
+0

谢谢!我一直在翻看它,一次又一次 – user1393500

+0

欢迎您 – Blackbelt

+0

Oke我改变了它,但它仍然没有工作,我的输入图像(320 x 240)仍然是一个427 * 320的图像...我没有想法为什么 – user1393500

相关问题