2012-06-01 3 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

1

Растровые изображения по умолчанию являются «неизменяемыми», то есть вы не можете их изменять. Вам нужно создать «изменяемое» растровое изображение, которое можно редактировать.

Проверьте эти ссылки, как это сделать так:

BitmapFactory.decodeResource returns a mutable Bitmap in Android 2.2 and an immutable Bitmap in Android 1.6

http://sudarnimalan.blogspot.com/2011/09/android-convert-immutable-bitmap-into.html

Смежные вопросы