ActionScript 3.0, l'essentiel sous la main Adobe Flash Accueil
Fiches
Boutique
Contact
Enregistrer un aperçu JPG
INFOS : Le code initial pour cet effet a été récupéré sur le site http://snipplr.com. Voir la source.

Nous allons voir ici comment enregistrer un aperçu de notre scène (ou d'un clip en particulier) au format JPG. Cette fonction est très utile pour vos applications de création de carte de voeux par exemple.

Pour cela, nous allons utilisez le package Adobe JPGEncoder, et un peu de code PHP dans une page externe. Dans votre Flash, sur une image clé vide, mettez ceci :

//Imports Flash
import flash.display.MovieClip;
import flash.display.BitmapData;
import flash.utils.ByteArray;
import flash.net.URLRequestHeader;
import flash.net.URLRequest;
import flash.events.MouseEvent;

//Import de la classe Adobe JPGEncoder
import com.adobe.images.JPGEncoder;

function createJPG(mc:MovieClip,n:Number,fileName:String)
{
//Transforme le contenu à enregistrer en JPG en données bitmap
var jpgSource:BitmapData = new BitmapData(mc.width,mc.height);
jpgSource.draw(mc);

//Création d'un encodeur au format JPG
var jpgEncoder:JPGEncoder = new JPGEncoder(n);

//Encodage des données bitmap et stockage dans un tableau de données
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);

//Définition du type de contenu envoyé dans l'entête de l'URL
var header:URLRequestHeader = new URLRequestHeader("Content-type","application/octet-stream");

//Envoi des données vers la page PHP pour l'ouverture d'une fenêtre d'enregistrement
var jpgURLRequest:URLRequest = new URLRequest("save.php?name="+fileName+".jpg"); //Spécification du nom du JPG
jpgURLRequest.requestHeaders.push(header); //Spécification de l'entête
jpgURLRequest.method = URLRequestMethod.POST; //Méthode d'envoi POST/GET
jpgURLRequest.data = jpgStream; //Spécification des données
navigateToURL(jpgURLRequest,"_blank"); //Envoi
}

//Bouton de sauvegarde
function onClick(e:MouseEvent):void
{
createJPG(monClip, 90, "maCarte"); //Création d'un JPG avec 'monClip', appelé 'maCarte'
}
btn_save.addEventListener(MouseEvent.CLICK, onClick);

Ensuite, dans votre page PHP, insérez ceci :

<?php
if(isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
//Récupération des données
$img = $GLOBALS["HTTP_RAW_POST_DATA"];

//Ouverture de la fenêtre d'enregistrement
header('Content-Type: image/jpeg');
header("Content-Disposition: attachment; filename=".$_GET['name']);
echo $img;
}
else
{
echo 'An error occured.';
}
?>

Aperçus & Sources : (Flash CS4)
Commentaire(s)
Aucun.