你好我工作的一個很好的Android應用程序,我需要大的位圖適合小尺寸imageview
。我使用的大小imageview
300dp X 300dp顯示大的圖像1024 X 780適合大型圖像分成小的ImageView與良好的質量與原始圖像?
我怎樣才能讓大的圖像爲小,好質量的原始圖像?
你好我工作的一個很好的Android應用程序,我需要大的位圖適合小尺寸imageview
。我使用的大小imageview
300dp X 300dp顯示大的圖像1024 X 780適合大型圖像分成小的ImageView與良好的質量與原始圖像?
我怎樣才能讓大的圖像爲小,好質量的原始圖像?
@Nikola評論回答了我的問題。我在答案中寫了這個以便它對未來的讀者有好處
您應該製作尺寸爲300x300的縮略圖圖像,但保留其縱橫比。您可以在畫布上繪製較大的圖像,並以某種顏色填充剩餘的空間。
你嘗試im.setScaleType(ScaleType.FIT_XY)
**不要使用此爲**'FIT_XY'不*不*保持縱橫比,並伸展你的形象。 'FIT_CENTER'會更合適。 – kcoppock
試試這個:
public static Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) {
int width = bm.getWidth();
int height = bm.getHeight();
float scaleWidth = ((float) newWidth)/width;
float scaleHeight = ((float) newHeight)/height;
// CREATE A MATRIX FOR THE MANIPULATION
Matrix matrix = new Matrix();
// RESIZE THE BIT MAP
matrix.postScale(scaleWidth, scaleHeight);
// RECREATE THE NEW BITMAP
Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height,
matrix, false);
return resizedBitmap;
}
使用方便:
Bitmap bmResized=getResizedBitmap(yourBitmap,newHeight,newWidth);
,你會得到你的調整後的圖像
注:如果要調整資源圖片使用此轉換爲位圖:
Bitmap bmOrginal=BitmapFactory.decodeResource(this.getResources(), R.drawble.yourRes);
Bitmap bmResized=getResizedBitmap(bmOrginal,newHeight,newWidth);
然後設置調整後的圖像:
image.setImageBitmap(bmResized);
由於過濾器在Android中的工作方式,爲了獲得高質量的調整大小,我發現如果源和目標大小相差超過2倍,則需要在至少兩次調整大小時進行調整。在1024x780到300x228的情況下,我會通過兩遍:1024x780 [超過2x的dest,所以]→600x456 [dest的2倍]→300x228。 但是,這很慢,可能是不必要的(這是一個性能/質量折衷)。 – user1410657
+1謝謝你!你救了我的一天!它像一個魅力。再次感謝。 – Sajmon
很好的解決方案感謝 – kathir
你應該讓大小300×300的縮略圖,但保持其縱橫比。您可以在畫布上繪製較大的圖像,並以某種顏色填充剩餘的空間。 –