Ricerca…


introduzione

In questo argomento puoi imparare un po 'a manipolare i bitmapdata e l'elaborazione visiva, lavorare con i pixel e iniziare con i filtri degli effetti.

Effetto soglia (monocromatico)


necessario:

  1. comprensione dei dati Bitmap e Bitmap

cos'è la soglia

Questa regolazione prende tutti i pixel di un'immagine e ... li spinge verso il bianco puro o il nero puro

cosa dobbiamo fare

ecco una demo live di questo esempio con alcune modifiche aggiuntive come l'utilizzo di un'interfaccia utente per modificare il livello di soglia in runtime.

inserisci la descrizione dell'immagine qui

soglia in azione script 3 dalla documentazione ufficiale as3

Verifica i valori dei pixel in un'immagine rispetto a una soglia specificata e imposta i pixel che passano il test ai nuovi valori di colore. Utilizzando il metodo threshold (), è possibile isolare e sostituire gli intervalli di colori in un'immagine ed eseguire altre operazioni logiche sui pixel dell'immagine.

La logica di test del metodo threshold () è la seguente:

  1. Se ((pixelValue & mask) operazione (soglia e maschera)), quindi impostare il pixel su colore;
  2. Altrimenti, se copySource == true, imposta il pixel sul valore di pixel corrispondente da sourceBitmap.

Ho appena commentato il seguente codice con nomi esattamente come descrizione citata.

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)
}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow