2016-10-09 24 views
-1

В моем проекте java мне нужен метод преобразования 8-битного (0,225) изображения в оттенках серого в 3-битный (0,7). Есть идеи?Как преобразовать изображение в оттенках серого, где каждый пиксель составляет 8 бит для изображения, имеющего 3-битное представление для каждого пикселя?

Я использовал этот метод, но он дает мне

Исключение в потоке «основной» java.lang.ArrayIndexOutOfBoundsException: Координаты вне границ!

image.getRaster().setSample(x, y, image.getRaster().getSample(x,y, 0)/32) 
+1

Фраза «не работает» не говорит нам многого. Вы можете найти это полезным: [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask). – MJH

+0

Изменение образца для использования меньшего количества битов фактически не изменяет изображение как трехбитное изображение в оттенках серого. Дабаффер изображения по-прежнему остается одним и тем же битом на пиксель, как и раньше. --- Если вы хотите сохранить приблизительный пиксельный «цвет» (серый уровень), вы должны очистить младшие биты, а не сдвигать биты, поэтому используйте «sample = sample & 0xE0». – Andreas

ответ

0

Я думаю, что вы просто забыли, что деление на 32 не будет давать вам целое. Попробуйте разобрать это значение в INTEGER, и он может (или не) решить вашу проблему.

Поскольку ошибка касается размера массива, убедитесь, что вы не выходите за пределы длины и высоты изображения.