2013-05-19 141 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

相關問題