Обработка изображений на Android

Я пишу приложение для Android. Мне нужно сделать некоторую обработку изображения на снимке, снятом с камеры. Я использую Camera.PictureCallback, чтобы получить фотографию, и я получаю изображение в массиве байтов. Проблема в том, что я хочу делать операции на каждом пикселе фотографии (некоторые фильтры и другие вещи), поэтому, я думаю, фото в массиве байтов – неплохая идея. Но я не знаю, как интерпретировать информацию в этом байтовом массиве … Единственный способ, которым я знаю сделать обработку, – использовать BitmapFactory.decodeByteArray (), а затем использовать объект Bitmap. Является ли это хорошим способом обработки большого количества изображений? Сейчас я использую что-то вроде этого:

Растровое изображение mPhotoPicture mPhotoPicture = BitmapFactory.decodeByteArray (imageData, 0, imageData.length);

MPhotoPicture = mPhotoPicture.copy (Bitmap.Config.RGB_565, true);

Я ценю любую помощь.

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

Если вы используете RGB_565 , это означает, что каждый пиксель составляет 16 бит или два из этих байтов. Первые 5 бит являются красными, следующие 6 зелеными, а последние 5 – синими. Работа с этим является волосатой на Java. Я предлагаю вам работать с более простым форматом, таким как ARGB_8888 , что означает, что у вас есть 32 бита или четыре байта на пиксель, и каждый байт является его собственным значением (альфа, красный, зеленый, синий).

Чтобы проверить, попробуйте установить каждый четвертый байт, например [3] , [7] , [11] и т. Д., На 0. Это должно вынуть весь конкретный канал, в этом случае весь синий.

[2] , [6] , [10] и т. Д. Будут все зеленые значения для каждого пикселя.

(Обратите внимание, что четыре компонента могут идти в обратном порядке, потому что я не уверен в контенте! Так что я мог просто сказать вам, как вынуть альфу, а не синюю …)

Intereting Posts
Общие файлы jar для Android-проекта и библиотеки Android Convert List <String > to String Окно Android WindowManager не перемещается после того, как клавиатура вздрагивает Javascript console.log () на устройствах HTC Android и adb logcat Загрузить контактный образ в битмап IsIdleNow () возвращает true, но сообщение, указывающее, что ресурс перешел из занятого в холостой, никогда не отправлялся Почему карта Google работает на одном из моих устройств, но отображается на всех остальных устройствах, но все же GPS-системы все еще работают? Как выровнять ImageView с правой стороны LinearLayout Programmatically android Получено получаемое сообщение Acknwoledgement From GCM Service Невозможно вызвать методы веб-сервиса из эмулятора проекта Android. Как получить уникальный идентификатор пользователя One Signal в Mobile? Задание количества столбцов программным способом в TableLayout Android webView saveState Как отключить CalendarView в DatePicker? Как запрашивать (цену) информацию для нескольких продуктов в приложении одновременно?