2009-04-28 5 views
1

J'ai une autre pièce pour les gars plus avancés que moi;)Comment exporter une image depuis swf avec ActionScript3/PHP?

Je développe une application flash simple pour créer vos propres armoiries. Une fois la création terminée, il serait bon de l'enregistrer en tant qu'image sur l'ordinateur d'un client ou sur une base de données, je ne suis pas encore sûr. Le problème est de rendre l'image à partir du contenu swf - je veux dire pas le contenu entier, juste une partie de celui-ci, où le COA est. J'ai trouvé quelques eamples sur le web en utilisant des encodeurs d'images et PHP, mais je ne comprends pas comment cela fonctionne. Quelqu'un pourrait-il être si gentil de m'expliquer les principes de base de cela? Je veux le rendre aussi simple que possible.

Répondre

5

d'abord, dessiner l'image (Sprite ou MovieClip, etc.) dans un BitmapData:

var b: BitmapData = new BitmapData(640, 480, false, 0xffffffff); 
b.draw(mcToBeSaved); 

Ensuite, en utilisant par exemple as3corelib pour encoder le bitmapData en fichiers PNG ou JPG.

var ba: ByteArray = PNGEncoder.encode(b); 

Ensuite, pour Flash 10, vous pouvez obtenir immédiatement l'utilisateur d'enregistrer l'image dans un fichier, en utilisant la méthode de sauvegarde de FileReference.

+0

Je pense que je comprends, mais il semble que sauver un seul MovieClip à une image, ne sais pas, comment puis-je faire cela pour une coupure de la scène, disons une zone rectangulaire, qui peut contenir plus de MovieClips ? quelque chose comme une capture d'écran, mais pas toute une zone de film ... merci de toute façon – Dungeo

+0

une scène est également considérée comme un objet d'affichage, de sorte que vous pouvez dessiner la scène à la bitmapdata. utilisez le paramètre matrix de la fonction draw pour définir le décalage du rectangle de recadrage. – yuku

1

Cela semble être une question populaire ces derniers temps. Donc, je ne répète pas complètement toutes ces informations, les instructions pour enregistrer les données d'image, une fois que vous avez obtenu que BitmapData, sont ici:

How can I send a ByteArray (from Flash) and some form data to php?

Mais, d'abord, pour obtenir les données d'image, vous Vous aurez besoin de le retirer de n'importe quel MovieClip/Sprite, quoi que vous l'ayez. Pour ce faire, faites simplement:

var myBitmapData: BitmapData = nouveau BitmapData (desiredWidth, desiredHeight, isTransparent, backgroundColor); myBitmapData.draw (mcToBeSavedToImage);

Où mcToBeSavedToImage est le MovieClip que vous voulez transformer en image. La référence BitmapData est ici, si vous en avez besoin - il a d'autres exemples: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/BitmapData.html

Espérons que ça aide!

Questions connexes