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 ... ![]()










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
Oi, eu tenho algumas perguntas sobre você desing
talvez você possa dar contactos designer?
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?
@ 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.