[Flash 8] Bitmap-Downsampling (Mosaikeffekt)

Tobias Menzel

Erfahrenes Mitglied
Hallo,

mit diesem Codeschnipsel ist es möglich, Echtzeit-Mosaikeffekte (Vergröberung des Pixelrasters) zu erstellen. Mit diesem Effekt können z.B. Inhalte ein- oder ausgeblendet werden.

Kern der Sache ist eine Methode "sampleDown", die den Inhalt eines Quell-MovieClips transformiert auf einen Ziel-MovieClip überträgt:
Code:
function sampleDown(f, src, dest) {
	var bmp = new BitmapData(src._width / f, src._height / f);
	var mtx = new Matrix();
	mtx.scale(1 / f, 1 / f);
	bmp.draw(src, mtx);
	dest.attachBitmap(bmp, 1);
	dest._width = src._width;
	dest._height = src._height;
}
Kurze Erläuterung:
  • Der Parameter f bestimmt den Faktor der Auflösungsveringerung. Ein Wert von 1 bedeutet keine Veränderung, wärend z.B. ein Wert von 100 eine Veringerung um den Faktor 100 veranlasst.

  • Die Parameter src und dest sind Verweise auf Quell- und Ziel-MovieClip (beim Ziel-MovieClip sollte es sich um einen leeren MC handeln).

  • Vorgehensweise:

    1. Zunächst wird ein BitmapData-Objekt erstellt, welches um den Faktor f gegenüber dem Quell-MC verkleinert ist.

    2. Dann wird eine Transformierungsmatrix erstellt, die negative Skalierung um den Faktor f bedingt. Dadurch wird das Quellbild zunächst verkleinert.

    3. Das Quellbild wird nun unter Verwendung der Matrix in unser BitmapData-Objekt gezeichnet (draw-Methode) und auf den Ziel-MC gesetzt (attachBitmap-Methode).

    4. Der Ziel-MC wird nun auf die Originalmaße des Quellclips gestreckt, wobei durch Vergrößerung der einzelnen Pixel die Kachelung entsteht.

Im Anhang findet Ihr ein Beispiel zum Probieren (Ziehen des "Sliders" ändert die Skalierung).

Grüße und viel Spaß,

Tobi
 

Anhänge

  • downSample.zip
    190,6 KB · Aufrufe: 289

Neue Beiträge

Zurück