Como salvar imagens em Flash CS3

Com o uso de Adobe Flash CS3 Bitmap é tão aperfeiçoado que é imediatamente quis criar uma pintura de pequeno porte. . Já vimos como fazer uma pintura pequena (ver pintura no Flash CS3 Criar um Pintor: aplicação simples para desenho em Flash CS3 Pro ) pode suportar um "eliminador" verdadeira - função de apagar, graças a uma utilização específica de Camada de Shape e Bitmap . Vamos dizer que o Flash (em oposição a Flex) não permite a codificação (como JPG ou PNG) ele automaticamente salva as imagens Bitmap. No entanto, você pode contorná-la usando um script do lado do servidor ea capacidade de enviar dados em Flash POST.

A teoria

O artifício que podemos utilizar é a seguinte: ler os dados em um pixel por pixel bitmap, eles se transformam em valores hexadecimais e enviá-las para POST para uma página PHP (neste exemplo, nós usamos PHP ea biblioteca GD para criar o real " soluções de imagem, mas outras são igualmente eficazes).

Digamos que o único inconveniente desta técnica é muito lento, pelo menos com grande o suficiente Bitmap (eu tentei com um Bitmap 640 x 300)!

Além disso, como você verá no código do ActionScript, você pode verificar o andamento da implantação, mas só recebem o evento a conclusão de todo o trabalho; Actionscript + PHP.

A PRÁTICA

Dado um bitmap para usar o algoritmo pode ser o seguinte:

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 = =
* E-mail @: @ g.fazioli undolog.com
* @ Web: http://www.undolog.com
*
* @ Params:
*
* __bitmap: Ponteiro para o nosso bitmap
* __width: Largura em pixels
* __height: Altura em pixels
*
* /

/ Copiar / ler - isso poderia ser evitado
BitmapData = new BitmapData ( __width , __height ) ; var SBMP: BitmapData = new BitmapData (__width, __height);
( __bitmap ) ; . SBMP draw (__bitmap);
/ /
Array = new Array ( ) ; pixels var: matriz = new Matriz ();
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 ) ) ; . pixels 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 ( evento . COMPLETA
e : Event ) : void { (e: função do evento ): void {
'Completato' ) ; trace ('Concluído');
}
);
/ /
toString ( ) ; . urlpar pixels = pixels toString ().;
= __height ; urlpar __height = altura.;
= __width ; . urlpar __width width =;
= urlpar ; . urlreq urlpar date =;
= URLRequestMethod . POST ; urlreq method =. URLRequestMethod POST.;
( urlreq ) ; urlldr carga (urlreq).;

Como podemos usar o 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
/ **
* @ Prototype: 0.0.1
* Autor @: undo = =
* E-mail @: @ g.fazioli undolog.com
* @ Web: http://www.undolog.com
*
* @ Params:
*
* __bitmap: Ponteiro para o nosso bitmap
* __width: Largura em pixels
* __height: Altura em pixels
*
* /
/ / $ Pixels torna-se uma matriz com os valores de pixels individuais
explode ( "," , $_POST [ 'pixels' ] ) ; $ Pixels = explode ("", $ _POST ['pixels']);
$_POST [ 'width' ] ; $ Largura = $ _POST ['largura'];
$_POST [ 'height' ] ; $ Altura = $ _POST ['altura'];
/ / Cria a imagem - problema @ evitando erros
imagecreatetruecolor ( $width , $height ) ; $ Imagem = @ imagecreatetruecolor ($ largura, $ altura);
/ / Escreve os pixels ao longo do comprimento e altura
0 ; $ Index = 0;
$x = 0 ; $x < = $width ; $x ++ ) { for ($ x = 0; $ x <= $ largura, $ x + +) {
$y = 0 ; $y <= $height ; $y ++ ) { for ($ y = 0; $ y <height = $, $ y + +) {
hexdec ( "0x" . substr ( $pixels [ $index ] , 2 , 2 ) ) ; R = $ hexdec ("0x". substr ($ pixels [$ index], 2, 2));
hexdec ( "0x" . substr ( $pixels [ $index ] , 4 , 2 ) ) ; $ G = hexdec ("0x". substr ($ pixels [$ index], 4, 2));
hexdec ( "0x" . substr ( $pixels [ $index ] , 6 , 2 ) ) ; $ B = hexdec ("0x". substr ($ pixels [$ index], 6, 2));
imagecolorallocate ( $image , $r , $g , $b ) ; $ Cor = imagecolorallocate ($ image, $ r, $ g, $ b);
$image , $x , $y , $color ) ; imagesetpixel ($ imagem, $ x, $ y, $ cor);
$ Index + +;
}
}
/ / Escreve imagem (JPG - mas você pode usar um formato diferente) no disco / servidor
$image , "immagine.jpg" ) ; imagejpeg ($ imagem, "imagem.jpg");
$image ) ; // libero tutto imagedestroy (imagem $) / / libertar todos

Voltaremos em breve sobre esta questão, propondo outras soluções ... ;)

Referências e webgrafia:

4 comentários para "Como salvar imagens em Flash CS3"

  1. 08 de outubro de 2008 werutzb:

    Oi!

    Eu gostaria fazer melhor minhas capacidades SQL.
    O vermelho realmente muitos livros SQL e gostaria de
    ler mais sobre SQL para a minha carreira como gerente de banco de dados mysql.

    O que você recomendaria?

    Obrigado,
    Werutz

  2. 13 de janeiro de 2009 Abramovicl:

    Oi, eu tenho algumas perguntas sobre você desing
    talvez você possa dar contactos designer?

  3. 21 de julho de 2009 Uday:

    O código acima é workiing perfectelly se nós estamos exportando a altura SWF e com menos de 400 pixels. Se tomarmos a altura e com mais de 400 pixels, então não está funcionando.

    Você pode por favor me diga, como posso salvar um bitmap Qualquer mais de 500 × 500 pixels a partir do Flash?

  4. 03 de agosto de 2009 Giovambattista Fazioli :

    @ Uday: por favor, verifique suas configurações php. Poderia ser alguma configuração de tempo limite muito baixo. Para enviar pixels bitmap para o servidor em modo POST pode demorar alguns minutos para processar.

Deixe um comentário

XHTML PERMIT TAG: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CÓDIGO DE INSERÇÃO:
 <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