2012-02-20 46 views
17

我想用BitmapFactory.decodeFile(路徑,選項)從SD卡解碼圖像。
我也希望大於2048x2048像素的圖像縮小到最大2048x2048(保持比例)。
我可以在獲取位圖後手動執行此操作,但除了已分配的字節外,還需要分配大量的字節。
我應該如何設置我的BitmapFactory.Options對象來獲得該效果?
感謝Android如何使用BitmapFactory選項縮放圖像選項

回答

3

你可以嘗試這樣的事情:

int imageWidth, imageHeight; 

Bitmap result = Bitmap.createScaledBitmap(bitmapPicture, 
         imageWidth, imageHeight, false); 

在這裏,你可以添加自己的寬度和高度。 bitmapPictureBitmap的對象。 讓我知道這是否對你有任何幫助。

+1

就像我說的,我試圖避免不得不分配另一個2048x2048像素,但讓BitmapFactory自動執行此操作,因爲我的內存很短。你的方法只是分配一個新的位圖,這不是我想要的。感謝您的回覆。 – saarraz1 2012-02-20 12:26:47

5

從您的Options開始,將inJustDecodeBounds設置爲true,這將爲您提供圖像的大小,而不會加載任何圖像數據。
如果圖片尺寸小於您的最大尺寸,則只需像往常一樣加載。
另一方面,如果太大,請使用inSampleSize來讀取較小的位圖。

注:我不認爲解碼做任何過濾使用inSampleSize的時候,所以你可能會失去一些細節,但你的圖像尺寸是如此之大(2048像素),我不認爲這會造成任何問題。