Поворот растрового изображения прямоугольника в Android

У меня есть растровое изображение прямоугольной формы, которое мне нужно повернуть на 90 градусов по часовой стрелке или против часовой стрелки.

Я могу выполнить вращение с помощью этого кода:

    Matrix matrix = new Matrix();
    matrix.setRotate(90, originalBitmap.getWidth()/2, originalBitmap.getHeight()/2);
    return Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.getWidth(), originalBitmap.getHeight(), matrix, true);

Однако этот код поворачивает изображение «на месте», используя старые значения высоты / ширины. И получившееся изображение выглядит растянутым и некрасивым.

Есть ли хороший способ повернуть изображение на 90 градусов в новую высоту / ширину? Возможно, одно из возможных решений - сначала изменить размеры исходного растрового изображения?

Спасибо


person Anton    schedule 07.06.2011    source источник
comment
Вы нашли для этого решение?   -  person Catalin Morosan    schedule 28.05.2012


Ответы (1)


Разве вы не используете старые значения при создании нового растрового изображения? Просто замените их в последней строке:

 return Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.getWidth()/2, originalBitmap.getHeight()/2, matrix, true);
person Community    schedule 07.06.2011
comment
Если я создам новое растровое изображение с такими параметрами: newWidth = originalHeight; newHeight = originalWidth; есть исключение, сообщающее мне, что высота растрового изображения не может быть меньше исходной. - person Anton; 07.06.2011