Farben in Bildern ausmustern oder ich sehe was was Du nicht siehst geschrieben am 25.04.2010
Manchmal benötigt man eine Funktion um bestimmt Farben aus einer Bitmap zu extrahieren. Dazu gibt es in Flash die threshold Funktion.
Die folgende Demo macht diesen Effekt sichtbar, wenn man mit der Maus über das Bild fährt:und manchmal versteckt sich in einem Bild mehr als man sieht.
Das Script ist nicht weiter kompliziert, wenn man herausgefunden hat wie es funktioniert.
ActionScript2import flash.geom.Matrix;
import flash.display.BitmapData;
import flash.geom.*;
var basis:MovieClip=this;
var quellMC:MovieClip=this.quelle;//ein MovieClip mit dem Bild auf der Bühne
//Quellbild in eine Bitmap kopieren
var quellBitmap:BitmapData=new BitmapData(quellMC._width,quellMC._height,true, 0x00ff0000);
quellBitmap.draw(quellMC,new Matrix(),null,BlendMode.NORMAL,null,false);
//Temporärer Movieclip
var zielMC:MovieClip=basis.createEmptyMovieClip('zielMC',basis.getNextHighestDepth());
zielMC._x=quellMC._width;
quellMC.onEnterFrame=function(){
if(this.hitTest(this._xmouse,this._ymouse,true)){//Maus über Quellbild
//Farbe unterm Mauszeiger holen
var picfarbe=quellBitmap.getPixel(this._xmouse,this._ymouse);
//eine neue Bitmap erzeugen
var temp:BitmapData=new BitmapData(quellBitmap.width,quellBitmap.height,true, 0x00cccccc);
//nur die selektierte Farbe hineinkopieren
temp.threshold(quellBitmap, new Rectangle(0, 0, quellBitmap.width, quellBitmap.height)
,new Point(0, 0)
,"==" //Maskierungsmode
,picfarbe //zu maskierende Farbe
,0xff000000+picfarbe //Farbe im temp-Bitmap
,0x00ffffff
,false
);
//alten Movieclip löschen
removeMovieClip(zielMC);
//neuen anlegen
zielMC=basis.createEmptyMovieClip('zielMC',basis.getNextHighestDepth());
//verschieben
zielMC._x=quellMC._width;
//Bitmap anfügen
zielMC.attachBitmap(temp,zielMC.getNextHighestDepth());
}
}
Näheres zu threshold-Funktion findet man in der Hilfe von Flash und wird deshalb hier nicht weiter erläutert.
Tipp: das Quellbild sollte am besten ein png sein - da bei jpeg durch die Kompression zu viele Artefakte entstehen.