Mit dem Einsatz von Adobe Flash CS3 Bitmap wird so verbessert, dass sofort wollte eine kleine Paint zu erstellen. . Wir haben bereits gesehen, wie eine kleine Paint-machen (siehe Paint in Flash CS3 erstellen Painter: einfache Anwendung zum Zeichnen in Flash CS3 Pro ) kann eine echte "Radiergummi"-Unterstützung - Löschfunktion, dank einer besonderen Verwendung Layer- Shape und Bitmap . Lassen Sie uns sagen, dass Flash (im Gegensatz zu Flex) es nicht zulassen, Kodierung (wie JPG oder PNG) es speichert automatisch die Bitmap-Bilder. Sie können aber drum herum kommen mit einem Server-Side-Scripting und die Fähigkeit, Daten in Flash-POST zu senden.
Die Theorie
Der Kunstgriff, dass wir verwenden können, ist wie folgt: Lesen Sie die Daten in eine Bitmap Pixel für Pixel, sie in hexadezimale Werte ab und senden Sie sie an eine PHP-Seite (in diesem Beispiel verwenden wir PHP und die GD-Bibliothek, um die tatsächliche erstellen POST ' Bild, aber auch andere Lösungen sind gleichermaßen wirksam).
Nehmen wir an, dass der einzige Nachteil dieser Technik sehr langsam ist, zumindest mit Bitmap groß genug (Ich habe versucht, mit einer Bitmap 640 x 300)!
Auch, wie Sie in den ActionScript-Code zu sehen, können Sie den Fortschritt der Implementierung, sondern nur zu der Veranstaltung der Abschluss aller Arbeiten, Actionscript + PHP.
DIE PRAXIS
Bei einer Bitmap, um den Algorithmus verwenden können folgende sein:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | / ** * @ Prototype: 0.0.1 * @ Autor: undo = = * @ Email: @ g.fazioli undolog.com * @ Web: http://www.undolog.com * * @ Parameter: * * __bitmap: Zeiger auf unsere Bitmap * __width: Breite in Pixel * __height: Höhe in Pixel * * / / / Copy zu lesen - das könnte vermieden werden BitmapData = new BitmapData ( __width , __height ) ; var SBMP: BitmapData = new BitmapData (__width, __height); ( __bitmap ) ; . SBMP draw (__bitmap); / / Array = new Array ( ) ; var Pixel: Array = new Array (); var xx : uint = 0 ; xx < = __width ; xx ++ ) { for (var xx: uint = 0; xx <= __width; xx + +) { var yy : uint = 0 ; yy < = __height ; yy ++ ) { for (var yy: uint = 0; yy <= __height; yy + +) { ( sbmp . getPixel32 ( xx , yy ) . toString ( 16 ) ) ; . Pixel push (sbmp. getPixel32 (xx, yy) toString (16).); } } / / URLRequest = new URLRequest ( "http://miodominio.com/savebitmap.php" ) ; var urlreq: URLRequest = new URLRequest ("http://miodominio.com/savebitmap.php"); URLVariables = new URLVariables ( ) ; var urlpar: URLVariables = new URLVariables (); URLLoader = new URLLoader ( ) ; var urlldr: URLLoader = new URLLoader (); / / ( Event . COMPLETE , urlldr. addEventListener ( Ereignis . COMPLETE e : Event ) : void { Funktion (e: Event- ): void { 'Completato' ) ; trace ("Abgeschlossen"); } ); / / toString ( ) ; . urlpar Pixel = Pixel toString ().; = __height ; urlpar __height = Höhe.; = __width ; . urlpar __width = Breite; = urlpar ; . urlreq urlpar = date; = URLRequestMethod . POST ; urlreq method =. URLRequestMethod POST.; ( urlreq ) ; . urlldr Last (urlreq); |
Wie können wir PHP-Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | / ** * @ Prototype: 0.0.1 * @ Autor: undo = = * @ Email: @ g.fazioli undolog.com * @ Web: http://www.undolog.com * * @ Parameter: * * __bitmap: Zeiger auf unsere Bitmap * __width: Breite in Pixel * __height: Höhe in Pixel * * / / / $ Pixels wird ein Array mit den Werten der einzelnen Pixel explode ( "," , $_POST [ 'pixels' ] ) ; $ Pixels = explode ("", $ _POST ['Pixel']); $_POST [ 'width' ] ; $ Width = $ _POST ['width']; $_POST [ 'height' ] ; $ Höhe = $ _POST ['height']; / / Erstellen Sie das Bild an - @ Thema Vermeidung von Fehlern imagecreatetruecolor ( $width , $height ) ; $ Image = @ imagecreatetruecolor ($ width, $ height); / / Schreiben der Pixel entlang der Länge und Höhe 0 ; $ Index = 0; $x = 0 ; $x < = $width ; $x ++ ) { for ($ x = 0; $ x <= $ width, $ x + +) { $y = 0 ; $y <= $height ; $y ++ ) { for ($ y = 0; $ y <= $ height, $ y + +) { hexdec ( "0x" . substr ( $pixels [ $index ] , 2 , 2 ) ) ; $ R = hexdec ("0x". substr ($ Pixel [$ index], 2, 2)); hexdec ( "0x" . substr ( $pixels [ $index ] , 4 , 2 ) ) ; $ G = hexdec ("0x". substr ($ Pixel [$ index], 4, 2)); hexdec ( "0x" . substr ( $pixels [ $index ] , 6 , 2 ) ) ; $ B = hexdec ("0x". substr ($ Pixel [$ index], 6, 2)); imagecolorallocate ( $image , $r , $g , $b ) ; $ Color = imagecolorallocate ($ image, $ r, $ g, $ b); $image , $x , $y , $color ) ; imagesetpixel ($ image, $ x, $ y, $ color); $ Index + +; } } / / Write Bild (JPG - aber Sie können ein anderes Format verwenden) auf der Festplatte / Server $image , "immagine.jpg" ) ; imagejpeg ($ image, "bild.jpg"); $image ) ; // libero tutto imagedestroy ($ image) / / free all |
Wir werden in Kürze wieder über dieses Thema mit dem Vorschlag zu anderen Lösungen ... ![]()










Hallo!
Ich möchte besser meine SQL-Funktionen.
Die rote wirklich viele SQL-Bücher und möchten
Lesen Sie mehr über SQL für meine Tätigkeit als MySQL-Datenbank-Manager.
Was würden Sie empfehlen?
Thanks,
Werutz
Hallo, ich habe einige Fragen über Sie desing
Vielleicht kannst du Designer Kontakte?
Der obige Code ist perfectelly workiing, wenn wir den Export der SWF Höhe sind und mit weniger als 400 Pixel. Wenn wir die Höhe zu nehmen und mit mehr als 400 Pixel, dann ist es nicht.
Kannst du mir bitte sagen, wie kann ich ein Bitmap Alle mehr als 500 × 500 Pixel von Flash?
@ Uday: Bitte überprüfen Sie Ihre PHP-Einstellungen. Könnte einige Timeout-Einstellung zu niedrig. So senden Sie Bitmap-Pixel auf dem Server in POST-Modus können mehrere Minuten in Anspruch nehmen.