Я пытаюсь динамически создавать изображения в Android, беря существующее растровое изображение и удаляя его центр, чтобы сделать «обрезанную» версию.Высота получающегося изображения, естественно, будет меньше оригинала, что-то вроде прикрепленного примера.
Я получил грубый способ сделать это, создав два новых растровых изображения из оригинала, одно из которых содержит верхнюю часть изображения.над секцией кадрирования (например, головой андроида в примере), а другая содержит оставшееся изображение под секцией кадрирования (лапами андроида) с использованием метода Bitmap.createBitmap(source, x, y, width, height)
, затем рисует обе эти растровые изображения на холсте размером, равнымисходное изображение за вычетом удаленного пространства.
Это кажется немного неуклюжим, и, поскольку я мог бы вызывать этот метод несколько раз в секунду, кажется расточительным создавать два растровых изображения каждый раз.
Мне было интересно, есть ли более эффективный способ сделать это.Что-то вроде рисования оригинального растрового изображения на холсте с использованием Path с xfermode его Paint, установленным в new PorterDuffXfermode(Mode.DST_OUT)
, чтобы вырезать часть изображения, которую я хочу удалить.Но это, кажется, очищает эту область и не уменьшает изображение, т. Е. Оставляет большой пустой промежуток в середине Android.
Любые предложения с благодарностью!