2009-04-14 6 views
3

J'écris une application flash en utilisant les outils open source. Je voudrais charger un fichier de données dans l'application et capturer une capture d'écran de la scène sur le serveur. La seule partie qui semble mystérieuse est l'exécution de l'application sur le serveur. En fait, je ne m'inquiète même pas si c'est la même application qui tourne sur le serveur et dans le navigateur - si je peux utiliser la scène flash et les routines de dessin pour produire un serveur d'image, je suis content. Si je dois plonger dans flex, bien. En ce moment j'ai du mal à trouver un point de départ.Comment produire une capture d'écran d'un swf flash sur le serveur?

Je crois qu'Adobe propose des produits commerciaux qui peuvent convenir à vos besoins, mais j'aimerais m'en tenir à Open Source, Apache et Linux. Je sais que c'est probablement possible avec haxe/neko, mais j'aimerais utiliser des outils plus courants si possible. Est-ce que je demande trop?

EDIT/CLARIFICATION: Un grand merci pour les réponses jusqu'à présent, mais je pense que j'ai été un peu boueux dans ma description. J'ai déjà écrit les trucs de scène en utilisant la même classe de PNGEncoder que celle suggérée. Le problème est dans l'exécution du swf sur le serveur. Je ne veux pas laisser le client prendre la capture d'écran elle-même, car cela ouvre la possibilité au client de soumettre une capture d'écran malicieuse qui ne correspond pas à ce qui est sur la scène, c'est-à-dire . Si je pouvais lancer le code ActionScript sur le serveur, alors je pourrais générer la capture d'écran de mes fichiers de données et être sûr que la capture d'écran correspond aux données, mais je ne sais pas comment exécuter l'actionScript ou swf sur le serveur.

+0

Quelle sorte de fréquence envisagez-vous? 100 par seconde? 1 par heure? Cela ferait probablement une énorme différence dans la réponse. –

+0

Réponse courte, je ne sais pas.Si la seule solution consiste à invoquer le lecteur flash pour chaque capture d'écran, bon, d'accord, ça serait bon à savoir. J'essaie surtout de trouver s'il y a un moyen de procéder. Plus vite c'est mieux, bien sûr, mais à ce stade je ne sais rien du tout! –

Répondre

0

Avez-vous essayé les commandes d'impression actionscript?

+0

Voici un lien intro -> http://www.devx.com/webdev/Article/9970 –

1

exécuté sur un des fichiers SWF ordinateur client, pas sur le serveur. La seule façon de l'exécuter sur le serveur serait de configurer un environnement spécial sur votre serveur pour qu'il fonctionne avec un navigateur Web, ouvrir la page et lancer le swf. Mais même alors, il n'aurait aucune corrélation avec ce qu'un utilisateur externe faisait.

Vous devrez exécuter le côté client. En ce qui concerne vos soucis de sécurité, la meilleure façon de se débarrasser de ceux-ci est d'avoir l'écriture php l'image réelle n'acceptera qu'une forme cryptée du fichier image, que le flash peut crypter. De cette façon, ils ne peuvent pas simplement utiliser le fichier PHP pour télécharger n'importe quelle image qu'ils veulent, à moins qu'ils ne soient parvenus à le crypter exactement comme votre swf l'a fait. Ensuite, cryptez le swf lui-même (je recommande SWF Shield) afin qu'un pirate potentiel ne puisse pas lire le code pour savoir comment chiffrer l'image.

1

Nous venons de terminer un projet similaire où nous avons rendu JPGs de fichiers SWF chargés des données dynamiques, nous avons utilisé IECapt

0

Je sais que cette question est morte depuis longtemps, mais j'eu un problème similaire et a fini par écrire un script en utilisant AppleScript + script ui pour saisir la zone intérieure de la fenêtre d'aperçu du lecteur flash autonome sous OS X. Vous pouvez le saisir sur github here.

0

Que diriez-vous de swfdec-thumbnailer du paquet swfdec-gnome? Il est utilisé pour créer des vignettes de fichiers SWF mais peut accepter des résolutions arbitraires de grande taille avec l'argument -s.

EDIT: swfdec-gnome a été déprécié dans Ubuntu 10.10 en faveur de Gnash. Here est un guide pour prendre des captures d'écran avec Gnash (notez que certaines fonctionnalités comme les dégradés ne sont pas encore correctement supportés).

Questions connexes