обрезать изображение прямо из байтового массива - PullRequest
7 голосов
/ 25 июля 2011

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

Мой метод работы: получить байт [] преобразовать его в растровое изображение с помощью BitmapFactory.decodebytearray сделать из него еще одно растровое изображение с помощью createbitmap (sourceBitmap, x1, y1, whileX, whileY) переработать первый (необрезанный) сохраните второй, а затем переработайте его тоже

проблема в том, что какое-то время существует 2 растровых изображения, исходное и обрезанное, и поэтому я не могу использовать этот метод с большими изображениями (более 3MP)

есть ли способ обрезать изображение прямо из байтового массива? Я видел, что существует decodeByteArray (dataArray, offset, length, options), но я не смог сделать из него изображение (остальные данные не были изображением) ... может кто-нибудь помочь, может быть?

Ответы [ 2 ]

2 голосов
/ 25 июля 2011

Метод decodeByteArray(dataArray, offset, length, options) предназначен не для обрезки изображения, а для анализа изображения из байтового буфера, который содержит больше данных, чем само изображение. Типичное использование этого - извлечение изображений из сложных структур двоичных данных, которые включают изображения среди прочего.

Насколько мне известно, нет способа обрезать изображение без создания нового. Для меня лучшее, что вы можете сделать, это то, что вы делаете в настоящее время.

0 голосов
/ 15 июля 2018

Для JPEG (вездесущий формат изображения на мобильных устройствах) можно декодировать только определенный прямоугольник. Это требует некоторой дисциплины при написании кода C поверх обычного программного декодера, особенно если вы хотите сделать это как можно быстрее и не тратить лишнюю оперативную память.

Поддержка в libjpeg-turbo была добавлена ​​через пять лет после того, как был задан этот вопрос.

...