2013-06-20 81 views
-1

我正在寫一個Android應用程序,需要顯示一些高質量的圖片(從專業數碼單反)。問題是它不能從畫廊顯示。Android的imageview圖像質量問題?

我先在Gallery中選擇一張照片。目標圖片爲2464 * 1632 JPEG,大約4.5M;

然後,我只是需要將其壓縮到800 * 600,並在ImageView的顯示出來:

image.setImageBitmap(this.bmp); 

的事情是,我已經測試我下載的形式上網(真的低質量)等圖像,和它的作品沒有任何問題。有人可以告訴我爲什麼它不能顯示?我會真的猥褻

+0

它不工作怎麼辦?如果你得到一個錯誤,你可以發表嗎? – karl

+0

它剛剛粉碎。我不知道爲什麼它粉碎。她的照片沒問題,但是當我選擇了我的客戶給我的那張照片時,我從畫廊中選擇了這張照片時,它剛剛粉碎。 –

+0

'粉碎'是什麼意思? – karl

回答

-1

由於內存有限,大圖很難處理。您有幾種選擇:

+0

1)WebView具有更差的圖像質量限制,通常對質量非常挑剔 - 它會很樂意在內存壓力下降級圖像,並且無法停止或檢測它。2)'createScaledBitmap'採用源位圖,而不是流。他必須使用BitmapFactory,並且沒有任何內容會自動檢測樣本大小。 – Delyan

+0

沒有什麼能夠阻止他將文件加載到Bitmap中,然後使用'createScaledBitmap'(儘管您在這裏有效地複製)。使用「WebView」可以充分利用圖像的高分辨率,這可能比縮小圖像版本更合適。最後,您可以計算正確的樣本大小以傳遞到「BitmapFactory」,以使圖像的大小適當。所有這些都是有效的選項,無論你喜不喜歡。 – Dororo

+0

您*不會*使用WebView的高分辨率。捏到變焦*不會*重新解碼圖像的區域,而是會給你一個模糊的混亂。嘗試一下。 什麼阻止他將文件加載到位圖的大小是-450萬像素* 4字節/像素= 18M這個對象。有16M堆的設備。即使他們被忽略,這給他的應用程序的其餘部分留下了一點喘息空間。 他*是*計算正確的'inSampleSize'。如果您發現有問題,請指出;完全駁回他提交的代碼並沒有幫助。 – Delyan