2012-06-13 18 views
0

我有一個已經解碼的位圖,我想暫時在繪製在畫布上之前進行縮放。所以解碼文件和設置大小是不可能的。我想保留現有位圖的大小,並在將其繪製在畫布上之前將其縮小爲較小。這是可行的嗎?如何在android中縮放已經存在的位圖?

使用Matrix postScale(sx,sy,px,py)可以正確縮放它,但不能正確定位它。而且,canvas.drawBitmap沒有選擇矩陣和我所能看到的位置。

有什麼建議嗎?

回答

2

下面是代碼:

public static Bitmap scaleBitmap(Bitmap bitmap, int width, int height) { 
    final int bitmapWidth = bitmap.getWidth(); 
    final int bitmapHeight = bitmap.getHeight(); 

    final float scale = Math.min((float) width/(float) bitmapWidth, 
      (float) height/(float) bitmapHeight); 

    final int scaledWidth = (int) (bitmapWidth * scale); 
    final int scaledHeight = (int) (bitmapHeight * scale); 

    final Bitmap decoded = Bitmap.createScaledBitmap(bitmap, scaledWidth, scaledHeight, true); 
    final Canvas canvas = new Canvas(decoded); 

    return decoded; 
} 

請注意:傳位圖縮放和它的新高度和寬度。

+0

完美的工作,謝謝! :) –

+0

我可以在現有的位圖上繪製這個位圖嗎?如果是,如何?如果沒有可能的解決方案是什麼? – Shrikant