ActionScript 3
Manipulation et filtrage de bitmap
Recherche…
Introduction
Dans cette rubrique, vous pouvez en apprendre un peu plus sur la manipulation des données bitmap et du traitement visuel, travailler avec les pixels et commencer avec les filtres d'effets.
Effet de seuil (monochrome)
Champs obligatoires:
- comprendre les données Bitmap et Bitmap
quel est le seuil
Ce réglage prend tous les pixels d’une image et les… pousse soit vers le blanc pur, soit vers le noir pur
ce que nous avons à faire
Voici une démonstration en direct de cet exemple avec quelques modifications supplémentaires, comme l'utilisation d'une interface utilisateur pour modifier le niveau de seuil en cours d'exécution.
seuil dans le script d'action 3 de la documentation officielle as3
Teste les valeurs de pixels dans une image par rapport à un seuil spécifié et définit les pixels qui passent le test à de nouvelles valeurs de couleur. À l’aide de la méthode threshold (), vous pouvez isoler et remplacer les plages de couleurs d’une image et effectuer d’autres opérations logiques sur les pixels de l’image.
La logique de test de la méthode threshold () est la suivante:
- Si ((pixelValue & mask) opération (seuil et masque)), définissez le pixel sur couleur;
- Sinon, si copySource == true, définissez le pixel sur la valeur de pixel correspondante de sourceBitmap.
Je viens de commenter le code suivant avec exactement les noms comme description citée.
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)
}