ActionScript 3
Bitmapmanipulation och -filtrering
Sök…
Introduktion
I det här ämnet kan du lära dig lite om att manipulera bitmapdata och visuell bearbetning, arbeta med pixlar och komma igång med effektfilter.
Tröskeleffekt (monokrom) effekt
nödvändig:
- förstå Bitmap- och Bitmap-data
vad är tröskelvärdet
Denna justering tar alla pixlar i en bild och ... skjuter dem till antingen rent vitt eller rent svart
vad vi måste göra
här är en Live Demo av det här exemplet med några ytterligare ändringar som att använda en UI för att ändra tröskelnivån i runtime.
tröskel i action script 3 från as3 officiell dokumentation
Testar pixelvärden i en bild mot en angiven tröskel och ställer in pixlar som passerar testet till nya färgvärden. Med hjälp av metoden tröskel () kan du isolera och ersätta färgintervall i en bild och utföra andra logiska operationer på bildpixlar.
Tröskel () -metodens testlogik är som följer:
- Om ((pixelValue & mask) operation (tröskel & mask)) ska du ställa in pixeln till färg;
- Annars, om copySource == true, ställer du in pixeln till motsvarande pixelvärde från sourceBitmap.
Jag kommenterade just följande kod med exakt namn som citerad beskrivning.
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)
}