2008-11-18 4 views
1

Nous essayons d'envoyer une image d'un gros fichier SWF à un serveur pour l'envoyer par la poste et nous avons un peu de mal avec le temps de transmission. Le SWF est environ 900px x 600px et restreint à AS2 donc nous avons utilisé cette classe Bitmap Exporter. Nous avons essayé d'utiliser plusieurs méthodes pour transmettre les données. base10, base36 et base128 mais aucun d'entre eux n'enverra le fichier en temps opportun.Flash Screenshot

À l'heure actuelle, nous avons affaire à 60-120 secondes par image, ce qui n'est pas acceptable.

Quelqu'un a-t-il des conseils pour traiter cette classe ou une autre pour l'envoi de grandes données bitmap à un serveur avec flash?

Nous vous remercions de votre temps.

+0

Je pense que j'aurais besoin de plus de détails pour postuler. Envoyez-vous une capture d'écran créée par le fichier SWF? Quelle est votre capacité de transmission à haute vitesse (votre FAI ou votre type de connexion)? Ce taux de téléchargement est plutôt bon si vous utilisez un modem 14 400 kbps. –

+0

Quelle classe d'exportation Bitmap utilisez-vous? Pourriez-vous poster votre code? – defmeta

Répondre

1

La raison pour laquelle vous obtenez des temps de téléchargement si longs est que l'image est à peine compressée (ou pas du tout en fonction de la façon dont la classe est implémentée). 900 par 600 pixels à 16 bpp (ou quoi que ce soit maintenant utilise flash) équivaut à quelque chose comme 1,5mb de données brutes.

Je doute qu'il existe des bibliothèques de compression utiles pour AS2, mais que peut être un chemin possible.

La façon la plus simple de réduire la taille de l'image du client consisterait à réduire la résolution. Utilisez-vous la résolution complète une fois qu'il atteint le serveur? Sinon, ce pourrait être un moyen possible.

(Je suppose que vous êtes conscient que cela serait beaucoup plus facile avec AS3, alors vous pouvez compresser l'image entière en client jpeg sans trop d'efforts, mais je suppose que le reste de votre application est AS2 point discutable)

+0

Oui, je suis limité à AS2 ici malheureusement. J'essaie d'abaisser la résolution autant que possible sans perdre la qualité de l'image, mais tout ce qui semble décent a encore un taux de transfert terrible. Merci pour l'entrée! – SageAMDP

0

Vous pouvez également essayer d'utiliser amfphp car il permet la sérialisation binaire lors de l'envoi de données au serveur.

0

Vous voudrez probablement implémenter un algorithme RLE simple dans AS2, si ce n'est déjà fait, pour compresser le bitmap. En supposant que vous ayez de jolis éléments vectoriels de couleur unie, RLE devrait fournir une assez bonne compression.

0

Juste une mouche rapide par et lien - http://www.gskinner.com/blog/archives/2006/03/saving_bitmapda.html

edit - Cela peut aussi être utile! http://www.5etdemi.com/blog/archives/2006/10/the-ultimate-as2-bitmapdata-saving-solution/

Grant Skinner suggère downsampling les données d'image à une plus petite palette de couleurs, puis une compression d'exécution (il en se penchant vers les chaînes de caractères UTF-8 étant comprimé et la manipulation puis la conversion d'images ailleurs, je suppose que le serveur)

Le lien d'UltimateBrent vers une bibliothèque de compression JPEG semble être une bonne idée, si ce n'est techniquement difficile.

est la profondeur de palette de couleur un problème? la compression avec perte?

pouvez-vous envoyer un tas de variables au serveur, recréer l'image sur un swf exécuté localement, puis l'exporter là? ou y a-t-il juste trop de variables (comme dans un programme de type de peinture)?Comme, disons, si c'est un truc de votre propre avatar, vous pourriez être en mesure de transformer les paramètres en XML et de générer l'image à partir de cela sur le serveur. Dunno!