IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Flex Discussion :

Upload de capture d'écran


Sujet :

Flex

  1. #1
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut Upload de capture d'écran
    Bonjour à tous,

    je cherche à faire quelque chose de simple, mais je ne vois pas trop quelles classes utiliser...

    J'aimerais à certains moments, effectuer un capture d'écran de l'application et l'uploader sur le serveur (en mode silencieux, sans action de l'utilisateur).

    Voilà ce que j'ai pour l'instant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            var bmp :BitmapData = new BitmapData(Application.application.width, Application.application.height, false);
            bmp.draw(Application.application as IBitmapDrawable); 
     
            var postVariables:URLVariables = new URLVariables;
            postVariables.unevar= "foo";
     
            var req:URLRequest = new URLRequest;
            req.url = uploadURL;
            req.method = URLRequestMethod.POST;
            req.data = postVariables;
     
            var fr:FileReference = new FileReference();
            fr.browse();
    Mon problème est à la dernière ligne... Je ne veux pas faire sélectionner un fichier à l'utilisateur, je voudrais juste uploader les bytes du bitmap vers le serveur...

    Une idée ?

    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  2. #2
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    voici la fonction que j'utilise pour ceci, ca devrait te donner la bonne direction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
            private function sauverEnvoyerPng():void{
    					var bmpData:BitmapData = new BitmapData(application.width,application.height);
    					bmpData.draw(application as IBitmapDrawable);
    					var pngEnc:PNGEncoder = new PNGEncoder();
    					var bytes:ByteArray = pngEnc.encode(bmpData);
    					var b64Enc:Base64Encoder = new Base64Encoder();
    					b64Enc.encodeBytes(bytes);
    					var b64Data:String = b64Enc.flush();
     
    					var url:String = "http://localhost/_Flex3/mes_tests/__sortie__/script/amfphp_19/gateway.php";
    					var png_retour:Function = function(tb:*):void{
    						if( tb[0] === false ){
    							Alert.show(tb[2], tb[1]);
    						}else{
    							Alert.show(tb[2], tb[1]);
    						}
    					}
    					var png_erreur:Function = function(e:*):void{
    						Alert.show(e,'Erreur : Remoting.Images.png()');
    					}
    					var edata:Edata = new Edata(url);
    					edata.appeler("Images.png", png_retour, png_erreur, b64Data, "dest_"+getTimer()+".png");					
            }
    et voici une version allégée de la classe Images qui recoit les données ainsi que la fonction PNG :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    class Images{
     
    	public function Images(){
    	}
     
     
    	/**
    	* @desc Stocker un PNG
    	*
    	* @param $data Les données du PNG sous forme de ByteArray ou de String base64
    	* @param $fichier Le nom du fichier 
    	*
    	* @return Array
    	*/
    	public function png($data, $fichier){
    			$op = @fopen('test.txt', 'w');
    			fwrite($op, gettype($data)."\n".$data);
    			fclose($op);
    		if( !$data ){
    			return array(false, 'Erreur : PNG', 'l\'argument $data n\'est pas défini');
    		}
    		if( !$fichier ){
    			return array(false, 'Erreur : PNG', 'l\'argument $fichier n\'est pas défini');
    		}
    		$op = @fopen($fichier, 'wb');
    		if( !$op ){
    			return array(false, 'Erreur : PNG', 'Impossible de créer le fichier de stockage');
    		}
    		if( is_string($data) ){
    			$data = base64_decode($data);
    		}else{
    			// is_binary (ByteArray)
    			$data = join('', $data);
    		}
    		if( !@fwrite($op, $data) ){
    			return array(false, 'Erreur : PNG', 'Impossible d\'écrire les données dans le fichier de stockage');
    		}
    		@fclose($op);
    		return array(true, 'PNG', 'sauvegarde réussi');
    	}
     
    }
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

  3. #3
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Merci.

    Au final, c'est aussi la moyen que j'ai décidé d'utiliser (un peu différement). J'encode également les données en Base64, puis je les envoie via un HTTPService.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <mx:HTTPService id="uploadImage" useProxy="false" method="POST" url="http://path/to/my/jsp" invoke="onUploadInvoke(event)" fault="onUploadFault(event)" result="onUploadResult(event)" />
    ...
        var bmp :BitmapData = new BitmapData(container.width, container.height, false);
            bmp.draw(container);
     
            var jpgBytes:ByteArray = new JPEGEncoder().encode(bmp);
     
            var b64e:Base64Encoder = new Base64Encoder();
            b64e.encodeBytes(jpgBytes, 0, jpgBytes.length);
            var encoded:String = b64e.toString();         
     
            var  o:Object = new Object;
            o.myvar = encoded;        
            uploadImage.send(o);
    ... car j'ai beau cherche, je ne trouve pas de classe EData dans Flex!


    "Le plug gros problème des citations trouvées sur internet, c'est qu'on ne peut jamais garantir leur authenticité"

    Confucius, 448 av. J-C

  4. #4
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    la classe EDATA est juste une classe perso mis en place pour me faciliter la vie avec REMOTING
    Le plus grand arbre est né d'une graine menue, une tour de neuf étages est partie d'une poignée de terre.
    Mon blog : http://web.codeur.free.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Empécher les captures d'écran
    Par alix the webmasta dans le forum Autres langages pour le Web
    Réponses: 10
    Dernier message: 17/02/2006, 00h24
  2. [VB.NET] Capture d'écran
    Par tiboooo dans le forum Windows Forms
    Réponses: 8
    Dernier message: 03/01/2006, 18h23
  3. Pb capture d'écran et msgbox
    Par PRACH dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 03/01/2006, 09h38
  4. Capture d'écran
    Par lildan dans le forum MFC
    Réponses: 1
    Dernier message: 14/11/2005, 14h26
  5. Réponses: 10
    Dernier message: 10/10/2003, 14h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo