2012-06-01 110 views
0

我試圖裁剪和縮放給定的位圖,但只能縮放工程。
我在做什麼錯?不能裁剪位圖

private Bitmap CropAndShrinkBitmap(Bitmap io_BitmapFromFile, int i_NewWidth, int i_NewHeight) 
{ 
    int cuttingOffset = 0; 
    int currentWidth = i_BitmapFromFile.getWidth(); 
    int currentHeight = i_BitmapFromFile.getHeight(); 

    if(currentWidth > currentHeight) 
    { 
     cuttingOffset = currentWidth - currentHeight; 
     Bitmap.createBitmap(i_BitmapFromFile, cuttingOffset/2, 0, currentWidth - cuttingOffset, currentHeight); 
    } 
    else 
    { 
     cuttingOffset = i_NewHeight - currentWidth; 
     Bitmap.createBitmap(i_BitmapFromFile, 0, cuttingOffset/2, currentWidth, currentHeight - cuttingOffset); 
    } 
    Bitmap fixedBitmap = Bitmap.createScaledBitmap(i_BitmapFromFile, i_NewWidth, i_NewHeight, false) ; 

    return i_BitmapFromFile; 
} 

描述說:「createBitmap返回一個不可變的位圖」。
這是什麼意思?這是我的問題的原因?

回答

1

裁剪可能工作得很好,但被裁剪產生的Bitmap對象是createBitmap()返回,則原始對象不被修改(如前所述,因爲Bitmap實例是不可變的)。如果你想裁剪結果,你必須抓住返回值。

Bitmap cropped = Bitmap.createBitmap(i_BitmapFromFile, cuttingOffset/2, 0, currentWidth - cuttingOffset, currentHeight); 

然後你可以做任何你想要的結果。

HTH