Изменение размера растрового изображения - PullRequest
5 голосов
/ 06 марта 2012

Код ниже изменяет размер растрового изображения и сохраняет соотношение сторон. Мне было интересно, есть ли более эффективный способ изменения размера, потому что мне пришло в голову, что я пишу код, который уже доступен в Android API.

private Bitmap resizeImage(Bitmap bitmap, int newSize){
    int width = bitmap.getWidth();
    int height = bitmap.getHeight(); 

    int newWidth = 0;
    int newHeight = 0;

    if(width > height){
        newWidth = newSize;
        newHeight = (newSize * height)/width;
    } else if(width < height){
        newHeight = newSize;
        newWidth = (newSize * width)/height;
    } else if (width == height){
        newHeight = newSize;
        newWidth = newSize;
    }

    float scaleWidth = ((float) newWidth) / width;
    float scaleHeight = ((float) newHeight) / height;

    Matrix matrix = new Matrix();
    matrix.postScale(scaleWidth, scaleHeight);

    Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, 
            width, height, matrix, true); 

    return resizedBitmap;
}

Ответы [ 3 ]

13 голосов
/ 06 марта 2012

Используйте метод Bitmap.createScaledBitmap():)

0 голосов
/ 06 марта 2012

Зависит от того, как вы используете изображение.Если все, что вы хотите сделать, это отобразить растровое изображение в представлении, просто вызовите myImageView.setImageBitmap(bitmap) и дайте каркасу изменить его размер.Но если вы беспокоитесь о памяти, лучше сначала масштабировать.

0 голосов
/ 06 марта 2012

Я действительно так не думаю, я сделал почти так же, как вы, и получил идею со страниц разработчиков Android ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...