Cómo guardar las imágenes en Flash CS3

Con el uso de Adobe Flash CS3 de mapa de bits se ha desarrollado tanto que de inmediato se quería crear una pequeña pintura. . Ya hemos visto cómo hacer una pintura pequeña (ver pintura en Flash CS3 Creación de un pintor: sencilla aplicación de dibujo en Flash CS3 Pro ) puede soportar un verdadero "borrador" - gracias a la función de borrado de un uso particular de la capa de Shape y Bitmap . Digamos que Flash (a diferencia de Flex) de codificación no lo permite (como JPG o PNG) se guarda automáticamente los mapas de bits. Sin embargo, usted puede conseguir alrededor de él mediante un script del lado del servidor y la capacidad de Flash para enviar datos en POST.

La teoría

El artificio que podemos utilizar es la siguiente: leer los datos contenidos en un píxel de mapa de bits por píxel, lo transformamos en valores hexadecimales y los envían para publicar en una página PHP (en este ejemplo vamos a usar PHP y librería GD para crear el actual ' soluciones de imagen, pero otros son igual de eficaces).

Digamos que el único inconveniente de esta técnica es muy lenta, por lo menos con lo suficiente de mapa de bits grande (lo intenté con un mapa de bits de 640 x 300)!

Además, como se verá en el código ActionScript, usted no puede controlar el progreso de la implementación, pero sólo recibe el evento de finalización de todo el trabajo; Actionscript + PHP.

LA PRÁCTICA

Dado un mapa de bits el algoritmo a utilizar puede ser el siguiente:

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
/ **
* @ Prototipo: 0.0.1
* @ Autor: = undo =
* @ E-mail: @ g.fazioli undolog.com
* @ Web: http://www.undolog.com
*
* Los @ params:
*
* __ De mapa de bits: puntero de mapa de bits a nuestro
__ * Ancho: anchura en píxeles
__ * Altura: la altura en píxeles
*
* /

/ / Copia de leer - esto podría evitarse
BitmapData = new BitmapData ( __width , __height ) ; var sbmp: BitmapData = new BitmapData (ancho, __, __ altura);
( __bitmap ) ; sbmp draw (__ mapa de bits).;
/ /
Array = new Array ( ) ; píxeles var: matriz = new array ();
var xx : uint = 0 ; xx < = __width ; xx ++ ) { for (var xx: uint = 0; xx <= __ ancho; xx + +) {
var yy : uint = 0 ; yy < = __height ; yy ++ ) { for (var aa: uint = 0; aa <= __ altura, aa + +) {
( sbmp . getPixel32 ( xx , yy ) . toString ( 16 ) ) ; impulsar píxeles (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 ( Evento . COMPLETO
e : Event ) : void { function (e: Event ): void {
'Completato' ) ; trace ('Completado');
}
);
/ /
toString ( ) ; urlpar píxeles. = píxeles toString ().;
= __height ; . urlpar height = __ altura;
= __width ; urlpar __ width = ancho.;
= urlpar ; urlreq de datos = urlpar.;
= URLRequestMethod . POST ; . urlreq method = URLRequestMethod . POST;
( urlreq ) ; . urlldr carga (urlreq);

¿Cómo podemos utilizar el código PHP:

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
/ **
* @ Prototipo: 0.0.1
* @ Autor: = undo =
* @ E-mail: @ g.fazioli undolog.com
* @ Web: http://www.undolog.com
*
* Los @ params:
*
* __ De mapa de bits: puntero de mapa de bits a nuestro
__ * Ancho: anchura en píxeles
__ * Altura: la altura en píxeles
*
* /
/ / $ Píxeles se convierte en una matriz con los valores de los píxeles individuales
explode ( "," , $_POST [ 'pixels' ] ) ; $ Píxeles = explotar ("", $ _POST ['píxeles']);
$_POST [ 'width' ] ; $ Ancho = $ _POST ['width'];
$_POST [ 'height' ] ; $ Altura = $ _POST ['height'];
/ / Crear la imagen - @ cuestión de evitar errores
imagecreatetruecolor ( $width , $height ) ; @ $ Imagen = imagecreatetruecolor ($ anchura, $ altura);
/ / Escribo los píxeles para toda la longitud y la altura
0 ; $ Indice = 0;
$x = 0 ; $x < = $width ; $x ++ ) { for ($ x = 0; $ x <= $ anchura, $ x + +) {
$y = 0 ; $y <= $height ; $y ++ ) { for ($ y = 0; $ y <= $ altura, $ y + +) {
hexdec ( "0x" . substr ( $pixels [ $index ] , 2 , 2 ) ) ; R = $ HexDec (. "0x" substr ($ píxeles [$ indice], 2, 2));
hexdec ( "0x" . substr ( $pixels [ $index ] , 4 , 2 ) ) ; $ G = HexDec ("0x". substr ($ píxeles [$ indice], 4, 2));
hexdec ( "0x" . substr ( $pixels [ $index ] , 6 , 2 ) ) ; $ B = HexDec (. "0x" substr ($ píxeles [$ indice], 6, 2));
imagecolorallocate ( $image , $r , $g , $b ) ; $ Color = imagecolorallocate ($ imagen, $ r, $ g, $ b);
$image , $x , $y , $color ) ; imagesetpixel ($ imagen, $ x, $ y, $ color);
$ Indice + +;
}
}
/ / Escribir la imagen (JPG - pero usted puede utilizar un formato distinto) en el disco / servidor
$image , "immagine.jpg" ) ; imagejpeg ($ imagen, "imagen.jpg");
$image ) ; // libero tutto imagedestroy ($ imagen) / / libre de toda

Volveremos en breve sobre este tema, proponiendo otras soluciones ... ;)

Referencias y Webgrafía:

4 comentarios a "Cómo guardar las imágenes en Flash CS3"

  1. 08 de octubre 2008 werutzb:

    ¡Hola!

    Me gustaría hacer mejores a mis capacidades de SQL.
    Los libros rojos de SQL realmente muchos y les gustaría
    leer más acerca de SQL Server para mi trabajo como gerente de base de datos mysql.

    ¿Qué recomendaría usted?

    Gracias,
    Werutz

  2. 13 de enero 2009 Abramovicl:

    Hola, tengo algunas preguntas acerca de usted desing
    tal vez usted puede dar a los contactos de diseño?

  3. 21 de julio 2009 Uday:

    El código anterior es trabajar por cuenta perfectelly si estamos exportando la altura SWF y con menos de 400 píxeles. Si tomamos la altura y con más de 400 píxeles, entonces no está funcionando.

    ¿Puede usted por favor dígame cómo puedo guardar cualquier mapa de bits superior a 500 × 500 píxeles de Flash?

  4. 03 de agosto 2009 Giovambattista Fazioli :

    @ Uday: por favor verifica la configuracion de php. ¿Podría haber algún ajuste de tiempo de espera demasiado bajo. Para enviar píxeles de mapa de bits en el servidor con las varias tendencias POST puede tardar unos minutos para procesar.

Deja un comentario

TAG PERMISOS XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> código de inserción:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL 


Deje de SOPA