Я пишу фильтр Гаусса для Android.
Согласно примеру GaussFilter из этого руководства: http://www.jhlabs.com/ip/blurring.html Я редактирую свое значение ALPHA следующим образом
alpha += f * ((pixelValue >> 24) & 0xff);
Согласно этой теме: Использование логического битового сдвига для значений RGB
(pixelValue >>24 & 0xff);
не эквивалентен
Color.alpha(pixelValue);
Насколько я знаю, в RGB альфа-канал необязателен. Так что это зависит от глубины, как я читаю и редактирую значения alpha и rgb.
Существует множество комбинаций для разной глубины цвета, например:
- 4 бит без альфы
- 4 бит + 4 бит альфа
- 24 бит, включая альфа (?)
- Macintosh предлагает 24-битную плюс (или включая?) 8-битную альфа-версию.
Поскольку я не знаю, какой тип изображения хочет обработать пользователь, я должен перехватить все комбинации. Я бы просто использовал Color.Red(значение), Color.Green(значение)... но я не уверен, что в конце концов это будет слишком медленно? Я мог бы преобразовать каждый ввод в 24-битное растровое изображение перед обработкой, но это заняло бы слишком много времени.
Любая помощь приветствуется, спасибо.