получить растровое изображение из видимого увеличенного изображения Android - PullRequest
8 голосов
/ 13 декабря 2011

У меня есть Imageview, который увеличен и повернут (я использовал multitouch zooming).Итак, как я могу получить растровое изображение только видимого содержимого (я имею в виду, когда я увеличиваю image, часть растрового изображения может исчезнуть с экрана. Итак, я хочу, чтобы bitmap было видно на экране),Так есть ли в api встроенная функция для создания маленького растрового изображения из большого?или есть какая-нибудь функция для обрезки изображения по x,y координатам?на самом деле я хочу, чтобы увеличенная или повернутая часть перешла к следующей activity

1 Ответ

9 голосов
/ 17 декабря 2011

Если вам известны все значения масштаба и поворота, вы можете создать Matrix с этими значениями и применить их к растровому изображению с помощью метода Bitmap.createBitmap () .
Пример:

Bitmap original = ((BitmapDrawable) yourImageView.getDrawable()).getBitmap();
Matrix matrix = new Matrix();
matrix.setRotate(degrees);
matrix.postScale(scale, scale);
Bitmap result = Bitmap.createBitmap(original, 0, 0, original.getWidth(), original.getHeight(), matrix, true);

Более быстрое, но, возможно, не столь удачное решение - создать растровое изображение и нарисовать на нем видимый в данный момент вид:

Bitmap result = Bitmap.createBitmap(yourImageView.getWidth(), yourImageView.getHeight(), Bitmap.Config.RGB_565);
Canvas c = new Canvas(result);
yourImageView.draw(c);

После чего результат долженсодержать именно то, что вы видите на экране.

...