leitura do artigo >

06
out

Salvar MovieClip como imagem (JPG ou PNG)

Que tal salvar uma imagem a partir do conteúdo de um MovieClip? Para muitas pessoas esse é um recurso muito útil, principalmente para quem gosta de criar personagens, paisagens ou outros tipos de ambientes personalizáveis através do Flash.

Comentários (3) Comentários(5) Categorias Action Script3, Classes, Soluções

O que nos permite salvar as imagens em ambos formatos são estas classes: JPGEncoder e PNGEncoder, ambas do pacote as3corelib. Se deseja trabalhar com elas, baixe o pacote e instale-o no classPath do Flash.

Neste post mostrarei 2 exemplos: o primeiro salva a imagem com formato JPG e o segundo salva a imagem com formato PNG. Ambos exemplos possuem um funcionamento simples, pois o que interessa neste post é dar ênfase ao código usado para salvar a imagem no computador a partir do Flash. Tendo eles como base você poderá criar algo mais complexo, como o aplicativo PhotoProfile (criado por mim).


EXEMPLO 1
Existem alguns sites baseados em comics que oferecem a possibilidade de você criar seu próprio super-herói e depois salvar a imagem no computador. Este exemplo cria um ambiente similar no qual você pode modificar a cor do fundo e do personagem:

savecharacter example

A parte do código que me interessa neste exemplo é a seguinte:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import com.adobe.images.*
 
var count:int = 1
var bmd_char:BitmapData = new BitmapData(char.width, char.height)
var jpg:JPGEncoder = new JPGEncoder(100)
var ba:ByteArray
var fr:FileReference = new FileReference()
 
save.addEventListener(MouseEvent.MOUSE_DOWN, saveDown)
function saveDown(e:MouseEvent){
	bmd_char.draw(char)
	bmd_char.copyPixels(bmd_char,new Rectangle(0,0,char.width,char.height),new Point())
	ba = jpg.encode(bmd_char)
	fr.save(ba,"char_"+count+".jpg")
	count++;
}

No FLA deste exemplo existe um MovieClip com nome de instância char, o qual é usado para criar o arquivo de imagem. A instância bmd_char captura a imagem da instância char através do método draw(). A instância jpg codifica a informação da instância bmd_char através do método encode(). A instância ba captura a informação da instância jpg. A instância fr coleta os dados da instância ba e abre a caixa de diálogo para salvar o arquivo. E finalmente, a instância save é o botão que, ao ser clicado, faz abrir a caixa de diálogo para salvar o arquivo.


EXEMPLO 2
Neste exemplo, você pode arrastar e mudar a posição do marcador (área delimitada em vermelho) e salvar uma imagem da área indicada:

savephoto example

A parte do código que me interessa neste exemplo é a seguinte:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import com.adobe.images.*
 
var count:int = 1
var bmd_photo:BitmapData = new BitmapData(photo.width, photo.height)
bmd_photo.draw(photo)
var bmd_area:BitmapData = new BitmapData(area.width,area.height)
var ba:ByteArray
var fr:FileReference = new FileReference()
 
save.addEventListener(MouseEvent.MOUSE_DOWN, saveDown)
function saveDown(e:MouseEvent){
	bmd_area.copyPixels(bmd_photo,new Rectangle(area.x,area.y,area.width,area.height),new Point())
	ba = PNGEncoder.encode(bmd_area)
	fr.save(ba,"img_"+count+".png")
	count++;
}

No FLA deste exemplo existe um MovieClip com nome de instância photo, o qual contém a imagem de uma foto. No entanto, neste exemplo criei um marcador que vai mostrar qual área da foto será salva. Então, também existe outro MovieClip, com nome de instância area, o qual vai indicar qual área será salva como imagem. A instância bmd_photo captura a imagem da instância char através do método draw(). A instância bmd_area captura da instância bmd_photo, através do método copyPixels(), os pixéis que correspondem a área indicada pela instância area. O método encode() da classe PNGEncoder é estático, por isso não é necessário uma instância de classe para acessá-lo. A instância ba captura a informação gerada pelo método PNGEncoder.encode(). A instância fr coleta os dados da instância ba e abre a caixa de diálogo para salvar o arquivo. E finalmente, a instância save é o botão que, ao ser clicado, faz abrir a caixa de diálogo para salvar o arquivo.


Salvar MovieClip como Imagem (FLAs salvos como CS4)
Baixado 87 vezes
Tamanho 587.79 kB
Clique para fazer o download

Postado em 06-10-2011 por
em Action Script3, Classes, Soluções

Share

Comentários

  • bunomonteiro disse:
    em 6 de outubro de 2011

    Uia!
    Massa esse artigo. Bem útil mesmo o assunto…
    Simples, e bastante explicativo.
    Valeu igu! =D

  • Hugo disse:
    em 7 de outubro de 2011

    Boa Ígor!

  • Sergio Aqueri disse:
    em 7 de outubro de 2011

    Bem bacana, parabéns pelo post Igor, nota 10 :)

  • paulo disse:
    em 30 de novembro de 2011

    Excelente amigo meus parabens !!!

  • Igor Amendola disse:
    em 2 de dezembro de 2011

    Buno, Hugo, Sergio e Paulo…
    Obrigado pelos comentarios e pela participaçao no blog.
    valeu! :D

 Escreva um Comentário

Seu nome

E-mail (não será publicado) (obrigatório)

Website

Comente

Spam protection by WP Captcha-Free