Обработка изображений на Android - PullRequest
5 голосов
/ 11 января 2010

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

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

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

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

1 Ответ

8 голосов
/ 11 января 2010

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...