Faire une copie décran automatique d'un swf

Catalarem Messages postés 20 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 19 mars 2011 - 5 mai 2009 à 00:02
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009 - 6 mai 2009 à 20:26
Bonjour,
je cherche à faire une copie d'écran automatique d'une page Flash,
Je m'explique : J'ai créé un mini-site de dessin : http://catalarem.com/travaux/arbre
pour l'instant les utilisateurs du site n'ont pas la possibilité de faire une copie d'écran de leur "œuvre" de manière automatisé ce qui pose problème lors de l'envoie (j'ai reçu pluseurs images de  de 10mo) j'aimerai donc automatiser tout ça.
Je suis un débutant et suis donc incapable de créer mon propre script;
J'ai trouvé ça : http://www.flash-db.com/Tutorials/snapshot/
ça : http://www.sephiroth.it/tutorials/flashPHP/print_screen/
ou encore ça : http://jeanphiblog.media-box.net/dotclear/index.php?2005/10/12/158-flash-8-bitmapdata2jpeg

Mais je n'arrive malheureusement pas à adapter ses scripts à mon site pour la simple et bonne raison que la plupart du temps il est nécessaire que le contenu de "limage générée" se trouve dans un sul clip, ce qui n'est pas le cas ici.
Voilà, TOUT le contenu du site est ici (je suis étudiant et ceci est un projet de cours que je présente pour mon BTS communication visuelle, je remercie donc infiniement tous ceux qui m'aideront : http://catalarem.com/travaux/arbre/site.zip

Merci encore

9 réponses

stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
5 mai 2009 à 00:45
Salut,

Tout ce qui est affiché dans ton anim est contenu dans des "clip (MC, Sprite) et donc tu peux les mettre dans un bitmap!

Si par exemple ton dessin est à la racine tu copie toute l'anim :
var screenshoot:BitmapData=new BitmapData(stage.stageWidth, stage.stageHeight);
screenshoot.draw(this);

Après tu peux retailler dans ton bmp pour ne garder que ton"dessin", puis pour alleger tu exporte le tout en jpg ou png via une classe qui encode (cf tes ref.)

Stef.
0
Catalarem Messages postés 20 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 19 mars 2011
5 mai 2009 à 09:23
Euh, je suis désolé de n'avoir pas tout saisi,
pour l'instant j'essaye d'adapter la source de Jeanphi :
Mais je n'arrive pas à remplacer le jpg généré par mon clip :
voir le fla + php ici : http://catalarem.com/travaux/arbre/rem/tac.zip
Le voir en live ici : http://catalarem.com/travaux/arbre/rem2
PS : la taille de l'image exportée n'est pas bonne non plus (mon site fait 1080 x 768)

PHP :

<?php
$lv = $_POST['tab'];
$temp = explode(",",$lv);
settype($temp[1],'integer');
$sortie = imagecreatetruecolor(1080,768);
$k = 0;
for($i=0; $i<1080; $i++){
  for($j=0; $j<768; $j++){
    imagesetpixel($sortie,$j,$i,$temp[$k]);
    $k++;
  }
}
$lien = 'http://catalarem.com';
$couleur_texte = imagecolorallocate($sortie, 255, 255, 255);
imagestring($sortie, 1, 900, 730, $lien, $couleur_texte);
 
@ob_end_clean();
@ini_set('zlib.output_compression','Off');
 
header('Pragma: public');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
 
header('Content-Tranfer-Encoding: none');
 
header('Content-Type: application/octetstream; name="capture.jpg"');
header('Content-Disposition: attachement; filename="capture.jpg"');
 
imagejpeg($sortie,"",100);
imagedestroy($sortie);
 
exit();
?>

AS :
import flash.display.BitmapData;
import flash.geom.*;
bitmap = new BitmapData(1080, 748, true);
this.attachBitmap(bitmap, 10);
_onEnterFrame = function () {
    bitmap.perlinNoise(Math.random()*1000, Math.random()*600, Math.random()*5, Math.random()*10, 1, 1, Math.random()*8, 0);
};
inter = setInterval(this, "_onEnterFrame", 1080);
////
btn2.onRelease = function() {
    lv = new LoadVars();
    lv.tab = new Array();
    for (i=0; i<1080; i++) {
        for (j=0; j<768; j++) {
            lv.tab.push(bitmap.getPixel(j, i));
        }
    }
    lv.send("http://catalarem.com/travaux/arbre/rem/generejpg.php", "_self", "POST");
};
0
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
5 mai 2009 à 20:43
Salut, dsl je ne fais plus d'AS2...

Stef.http://stephane.baleon.free.fr
0
Catalarem Messages postés 20 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 19 mars 2011
5 mai 2009 à 21:00
J'aimerai bien faire de l'AS3 aussi mais il faut bin avouer que pour un simple "apprenti graphiste", l'AS2 c'est quand même plus simple (ne serait ce que de pouvoir placer du code sur un bouton sans le nommer), il n'y a qu'a voir ce même site : Il propose un nombre incoyable de sources en AS2....ce qui est lon d'être le cas pour les sources AS3....
Sinon m'on problème de PHP (+ petit "bout" d'AS) n'a pas grand chose à voir avec ce débat !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
5 mai 2009 à 21:21
Je pensais que tu voulais sauver ton anim en jpg, or cela est facile en AS3 via la simple méthode draw du bitmapdata couplé à un byteArray pour stoquer les données. D'ailleur il y a deja plusieurs sources d'encodage jpg, ou png dispo en AS3, chose impossible en AS2, la il faut donc comme tu le fait passer par PHP... Pour ton probleme de liaison PHP-Flash, ben je ne souvient plus des objets utilisés (point completement changé en AS3).

Stef.
0
Catalarem Messages postés 20 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 19 mars 2011
5 mai 2009 à 22:52
Merci pour ces réponses rapide Stef (impressionnant au fait ce que tu fais pour un jeune-homme de 17 ans si ton profil ne ment pas)
Sinon "Mixer AS2 et AS3 au sein d'un même fichier c'est pas possible ? ( Non parce que re-écrire mon site en AS3 j'en suis incapable )
0
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
5 mai 2009 à 23:56
Salut, non tu ne peux pas mixer de l'AS2 et de l'AS3 au sein d'un même fichier! Cependant, tu peux intégrer des animations SWF AS2 dans une autre animation AS3 (car la machine virtuelle qui gère l'AS3 gère aussi l'AS2, mais ce n'est pas réciproque). Mais ici tu peux tout faire en AS2 si tu le veux ;). Je m'explique. En AS2, depuis Flash 8 il me semble, la méthode draw existe pour les BitmapData. Il te suffit donc de faire un 'draw' de ta scène ou de l'object (MC) ou est ton dessin, puis de transférer chaque pixel vers PHP qui créera ton image via la lib d'image PHP. Je te mettrais bien un bout de code ici, mais sur le pc ou je suis actuellement , les sauts de lignes de sont pas pris en compte sur flashkod :o Donc demain je te montrerais un exemple ;) Stef.
0
Catalarem Messages postés 20 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 19 mars 2011
6 mai 2009 à 10:55
Merci beaucoup pour ton aide !
0
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
6 mai 2009 à 20:26
essais sur une frame à la racine de ton anim.
-> attention, je ne suis pas sur que tout est dispo en AS2

bnt2.onRelease=function():Void {
    var screen:BitmapData=new BitmapData(stage.width, stage.height);
    screen.draw(this);
    var lv:LoadVars = new LoadVars();
    lv.tab = new Array();
    for (var i:Number=0; i<screen._width; i++) {
           for (var j:Number=0; j<screen._height; j++) {
               lv.tab.push(bitmap.getPixel(j, i));
           }
       }
       lv.send("http://catalarem.com/travaux/arbre/rem/generejpg.php", "_self", "POST");
}

Voila,
Stef.
0
Rejoignez-nous