для монохромный эффект Я только что создал учебник ниже
превью монохромного эффекта:
Требуется:
- понимание растровых и растровых данных
что такое порог
Эта настройка принимает все пиксели изображения
и ... подталкивает их к чистому белому или чистому черному
что мы должны сделать
Вот Live Demo этого примера с некоторыми дополнительными
изменяется как использование пользовательского интерфейса для изменения порогового уровня во время выполнения.
порог в сценарии действия 3
из официальной документации as3
Проверяет значения пикселей в изображении относительно указанного порога и устанавливает
пикселей, которые проходят тест на новые значения цвета. Используя порог ()
метод, вы можете выделить и заменить цветовые диапазоны в изображении и
выполнять другие логические операции над пикселями изображения.
Логика проверки метода threshold () выглядит следующим образом:
- Если ((pixelValue & mask) операция (порог и маска)), то установите
пиксель в цвет;
- В противном случае, если copySource == true, установите для пикселя значение
соответствующее значение пикселя из sourceBitmap.
Я только что прокомментировал следующий код с точно такими же именами, что и приведенное описание.
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Rectangle;
import flash.geom.Point;
var bmd:BitmapData = new wildcat(); // instantied a bitmapdata from library a wildcat
var bmp:Bitmap = new Bitmap(bmd); // our display object to previewing bitmapdata on stage
addChild(bmp);
monochrome(bmd); // invoking threshold function
/**
@param bmd, input bitmapData that should be monochromed
*/
function monochrome(bmd:BitmapData):void {
var bmd_copy:BitmapData = bmd.clone(); // holding a pure copy of bitmapdata for comparation steps
// this is our "threshold" in description above, source pixels will be compared with this value
var level:uint = 0xFFAAAAAA; // #AARRGGBB. in this case i used RGB(170,170,170) with an alpha of 1. its not median but standard
// A rectangle that defines the area of the source image to use as input.
var rect:Rectangle = new Rectangle(0,0,bmd.width,bmd.height);
// The point within the destination image (the current BitmapData instance) that corresponds to the upper-left corner of the source rectangle.
var dest:Point = new Point();
// thresholding will be done in two section
// the last argument is "mask", which exists in both sides of comparation
// first, modifying pixels which passed comparation and setting them all with "color" white (0xFFFFFFFF)
bmd.bitmapData.threshold(bmd_copy, rect, dest, ">", level, 0xFFFFFFFF, 0xFFFFFFFF);
// then, remaining pixels and make them all with "color" black (0xFF000000)
bmd.bitmapData.threshold(bmd_copy, rect, dest, "<=", level, 0xFF000000, 0xFFFFFFFF);
// Note: as we have no alpha channel in our default BitmapData (pixelValue), we left it to its full value, a white mask (0xffffffff)
}