AS3 Bitmap чёрно-белое - по соображениям сжатия

У меня есть поле, состоящее из BitmapData, которое я использую для точного обнаружения пикселей.

Тем не менее, BitmapData естественно хранит 2^32 (или 2^24 без альфа?) Возможностей для каждого пикселя. Мне нужно только 2 - черный или белый.

Но мне все еще нужно использовать.draw, чтобы другие объекты рисовались на этом BitmapData. Это не должно быть видимым.

Извлечение пикселя для обнаружения попадания не кажется слишком сложным, но рисование без циклического прохождения каждого пикселя кажется трудным. Является ли это возможным?

Каков будет правильный подход к этой проблеме?

1 ответ

Если вы хотите, чтобы ваши растровые данные были только черными или белыми, вы можете использовать BitmapData.threshold() после рисования новой маски поверх этого растрового изображения. Чтобы превратить ваш существующий BitmapData Для черно-белого с порогом в половину красного канала сделайте следующее:

bd.threshold(bd,bd.rect,new Point(),"<",0x00800000,0x0,0x00ff0000,true);
bd.threshold(bd,bd.rect,new Point(),">=",0x00800000,0x00ffffff,0x00ff0000,true);

Первый вызов с поворотом всех точек, которые имеют красный цвет ниже 0x80 черного, второй вызовет превращение всех оставшихся точек в белый цвет. Измените маску и пороговое значение, чтобы использовать зеленый или синий каналы, если хотите. Рассмотреть возможность применения правильно направленного ColorTransform возражать против вашего draw вызывает корректное применение маски к вновь нарисованному объекту.

Другие вопросы по тегам