2013-12-11 53 views
0

我想縮放一個位圖,其大小加倍。爲什麼我的位圖縮放後似乎爲空

但縮放位圖顯示空,所有純灰後...

這裏是代碼:

Matrix matrix = new Matrix(); 

    // resize the bit map 
    matrix.postScale(2, 2); 

    // recreate the new Bitmap and set it back 
    Bitmap bm2=Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true); 
    //bm.recycle(); 

編輯編輯編輯編輯編輯

我想通了這是內存問題,如果我用它的小圖像它工作正常。

問題仍然存在,大圖片!

感謝您的任何建議!

+0

發佈你的源代碼或兩個版本的圖像縮放和正常。 – Triode

回答

0

由於從Bitmap Doc它清楚地說,Bitmap.createBitmap()返回源的相同的位圖或部分bitmap.So可以在這裏它將返回相同的位圖object.But在這裏你正在回收它

bm.recycle(); 

這就是爲什麼你越來越空

使用此方法

public 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; 
    Matrix matrix = new Matrix(); 
    matrix.postScale(scaleWidth, scaleHeight); 

    Bitmap resizedBitmap = Bitmap.createBitmap(bm, 0, 0, width, height, 
      matrix, false); 
    return resizedBitmap; 
} 

,並通過寬度1920和高度as 2560

+0

謝謝kalyan,同樣的結果如果我不回收..: - (( –

+0

是任何位圖正在返回或它的空?? ?? –

+0

它不爲空,並且在調試時顯示正確的雙倍寬度和雙倍高度,但它都是灰色的...: - (( –

相關問題