Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Résolu] AS3 enregistrer le contenu d'un coontainers.UiLoader  (Lu 597 fois)

Hostile94

  • Wisi tout neuf
  • *
  • Hors ligne Hors ligne
  • Messages: 3
    • Voir le profil
Bonjour,

J'ai créer un outil de chargement d'image et d'exportation vers serveur.
Je souhaitai qu'il redimensionne mon image et que je puisse effectuer des rotations dessus.

Tout cela fonctionne a l'affichage mais quand je l'envoi sur le serveur l'image est celle que j'ai chargé avant modification.

J'ai remarqué que .content est un sur lequel j'effectue la rotation et l'envoi est une propriété en lecture seule.

Est il possible de sauvegarder se qui est dans mon "containers.UILoaders" (affimage)?

Je vous met mon code si quelqu'un a une idée.

var container:Loader;
var test1:UILoader = UILoader(affimage);
var nbrot:int=0;
var largeurx:int=0;
var hauteury:int=0;


chargerbt.addEventListener(MouseEvent.CLICK, init);
chargerbt.addEventListener(MouseEvent.CLICK, supprimer);
supprimerbt.addEventListener(MouseEvent.CLICK, supprimer);
rotationbt.addEventListener(MouseEvent.CLICK, rotationimage);
validerbt.addEventListener(MouseEvent.CLICK, validerimage);

function init(evt:Event):void {
var unFichier:FileReference = new FileReference();

unFichier.addEventListener(Event.SELECT, apresSelection);

//Gestion des fichiers visualisé
var typeFichier:FileFilter=new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)","*.jpg;*.jpeg;*.gif;*.png");
unFichier.browse([typeFichier]);

//après la sélection de l'image
function apresSelection(evt:Event):void {
var cible:FileReference=evt.currentTarget as FileReference;
cible.load();
cible.addEventListener(ProgressEvent.PROGRESS, onProgress);
cible.addEventListener(Event.COMPLETE, onComplete);
}

//à la fin du chargement de l'image
function onComplete(evt:Event):void {
var cible:FileReference=evt.currentTarget as FileReference;
trace("Fichier chargé avec succés");
container = new Loader();
container.loadBytes(cible.data);
container.contentLoaderInfo.addEventListener(Event.COMPLETE,onDataParsed);
}

//après le chargement complet des données de l'image dans "container", on l'affiche et on la redimensionne
function onDataParsed(evt:Event):void {

test1.addChild(container);
trace(affimage.parent);

//redimensionnement de l'image
container.content.scaleX=container.scaleY=1;
var scaleH:Number=1;
var scaleL:Number=1;
if (container.content.height>affimage.height) {
scaleH=affimage.height/container.content.height;
if (container.content.width>affimage.width) {
}
scaleL=affimage.width/container.content.width;
}
container.content.scaleX=container.content.scaleY=Math.min(scaleL,scaleH);
}
//Pendant le chargement,
function onProgress(evt:ProgressEvent):void {
trace("Loaded " + evt.bytesLoaded + " of " + evt.bytesTotal + " bytes.");

}
}

//Fonction de suppression d'image chargé
function supprimer(evt:Event):void {
trace(affimage.numChildren);
var lng:int=affimage.numChildren-1;
for (var i:int = lng; i>=0; i--) {
affimage.removeChildAt(i);
}
trace(affimage.numChildren);
if(largeurx>0){
container.x=0;
}
if(hauteury>0){
container.y=0;
}
nbrot=0;
}

//Fonction rotation 90°

function rotationimage(evt:Event):void {
nbrot++;
if(nbrot == 1)
{
largeurx = container.content.height;
}
if(nbrot == 2)
{
hauteury = container.content.width;
largeurx = container.content.height;

}
if(nbrot == 3)
{
largeurx = 0;
hauteury = container.content.width;
}

if(nbrot == 4)
{
largeurx = 0;
hauteury = 0;
nbrot = 0;
}
container.content.x=largeurx;
container.content.y=hauteury;
container.content.rotation += 90;
trace("Rotation de 90° effectué");
trace("largeur="+container.content.width+" Hauteur="+container.content.height);
}


function validerimage(evt:Event):void {

//convertion du Loader en bitmap
var image:Bitmap = Bitmap(container.content);

//Convertion du Bitmap en BitmapData
var bitmap:BitmapData = image.bitmapData;

// encodage au format PNG
var fluxBinairePNG:ByteArray = PNGEncoder.encode ( bitmap );

// entête HTTP au format brut
var enteteHTTP:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");

//URL du scripte de sauvegarde
var requete:URLRequest = new URLRequest("http://localhost/export.php?nom=sketch.png");
requete.requestHeaders.push(enteteHTTP);
requete.method = URLRequestMethod.POST;
requete.data = fluxBinairePNG;
navigateToURL(requete, "_blank");
}
« Dernière modification: Octobre 08, 2010, 09:56:44 am par Hostile94 »
IP archivée

Hostile94

  • Wisi tout neuf
  • *
  • Hors ligne Hors ligne
  • Messages: 3
    • Voir le profil
Re : AS3 enregistrer le contenu d'un coontainers.UiLoader
« Réponse #1 le: Octobre 07, 2010, 15:07:51 pm »
J'ai résolut mon problème grace la matrice.

je sélectionne la partie de l'image qui m'intéresse

function validerimage(evt:Event):void {

//convertion du Loader en bitmap
var bitmapData:BitmapData = new BitmapData(container.content.width, container.content.height, false, 0xffffff);
//Convertion du Bitmap en BitmapData

var myMatrix:Matrix = new Matrix();
myMatrix.translate(-219, -32);

bitmapData.draw(this, myMatrix);

// encodage au format PNG
var fluxBinairePNG:ByteArray = PNGEncoder.encode ( bitmapData );

// entête HTTP au format brut
var enteteHTTP:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");

//URL du scripte de sauvegarde
var requete:URLRequest = new URLRequest("http://localhost/export.php?nom=sketch.png");
requete.requestHeaders.push(enteteHTTP);
requete.method = URLRequestMethod.POST;
requete.data = fluxBinairePNG;
navigateToURL(requete, "_blank");
}
IP archivée
 




 
Wisibility.com
Wisibility est un sité dédié à la formation aux métiers l’image. Vous y trouverez différentes ressources gratuites et payantes vous aidant à maîtriser les logiciels graphiques tels que Photoshop, Illustrator, InDesign, Flash…

Aujourd’hui, Wisibility réunit une vingtaine d’experts, intervenant en Entreprise pour former graphistes, webdesigners, développeurs web, photographes, monteurs, trucistes…

Depuis 2006 nous nous sommes spécialisés dans les tutoriels vidéos permettant de se former à distance. Des centaines de tutoriels accessibles gratuitement et une boutique sur laquelle vous trouverez des formations complètes et des exercices pratiques.

Wisibility organise des événements graphiques, réalise une WebTV

Wisibility sur Adobe TV

Retrouvez nos tutoriels et nos émissions
sur le site officiel Adobe



 
Nos partenaires

Adobe   fotolia   WebINK   Amka   macandphoto   club
 


Contact - Wisibility est une marque déposée - Mentions légales

Creative Commons License

infos - inspiration - rendez-vous - logiciels materiels - tutoriels gratuits - formations en ligne - forums - galeries - glossaire - wisi tv