2015-03-28 1 views
0

Une application AIR mobile doit envoyer une image volumineuse à l'arrière pour l'afficher ultérieurement dans une page Web. Pour PNGEncoder dans l'application AIR, il est nécessaire de terminer, donc l'idée est de convertir les données d'image en ByteArray, de les compresser et de les envoyer au backend PHP où elles sont enregistrées en PNG par le code PHP. Donc, je cherche à porter PNGEncoder.as et la classe BitmapData à PHP pour accomplir cela. J'ai trouvé PNGEncoder.as dans as3corelib mais je ne trouve pas la source pour la classe BitmapData qu'il utilise. Donc les questions sont
1. Y at-il du code là-bas qui fait ce que j'essaie de faire?
2. Où puis-je trouver le code source BitmapData?
3. Y a-t-il un autre moyen d'accomplir ceci que je manque?
AS3 Code source BitmapData

Note1. Je me rends compte que je peux décompiler airglobal.swf où réside BitmapData, mais à la recherche d'une manière plus propre
Note2. Je suis au courant de AMFPHP, mais il ne supporte pas le type BitmapData
Merci Andy

+0

Avez-vous également testé JPEGEncoder au lieu de PNGEncoder? –

+0

Les images doivent être au format png selon les exigences du client – user2233677

Répondre

0

Je vois deux solutions à ce problème. Premièrement, vous pouvez envisager d'utiliser un Worker pour effectuer la routine de conversion et d'envoi, car la conversion d'image est une tâche assez simple et autonome à décharger, et puisque la plupart des périphériques modernes ont plus d'un noyau, il est préférable de mettre le matériel pour travailler sur le client plutôt que sur le serveur. Bien sûr, vous devrez prendre des mesures pour fournir à l'instance de travail les données requises et télécharger correctement l'image (les cookies peuvent ne pas être bien gérés dans un worker), mais cette approche est généralement plus propre et ne nécessite aucune modification côté serveur.

La seconde approche consiste à utiliser BitmapData.getPixels() pour convertir une région de pixels en une séquence d'octets, puis à les envoyer au serveur pour les convertir. Soyez averti cependant, la quantité de données dans un bitmap brut peut être trop grande pour le serveur à accepter, vous cherchez à pas moins de 4 octets par pixel, car les bitmaps dans AS3 sont 32 bits. Vous pouvez utiliser un encodeur d'image côté serveur pour convertir les données brutes sur le serveur après le téléchargement.

+0

J'envisage d'écrire un bitmap AS3 -> PNG ou JPEG en PHP (en portant vraiment sur PNGEncoder.as et JPEGEncoder.as existants) Un retour si un tel code peut être utile? Je peux voir des scénarios où une application mobile doit télécharger des images volumineuses vers un arrière pour les afficher ultérieurement dans un environnement non-AS3 (par exemple une page Web) Merci Andy – user2233677

+0

Désolé, aucune donnée à ce sujet. Peut-être existe-t-il des librairies PHP qui le font, cherchent entre les générateurs d'images, ceux-ci doivent exploiter des données bitmap brutes, donc probablement au moins un encodeur PNG est déjà développé. – Vesper

+0

Il existe une bibliothèque PHP ImageMagick qui gère beaucoup de formats, mais je ne pense pas qu'elle gère les données bitmap AS3 brutes. Donc, la question est vraiment, quelle serait l'utilité pour les développeurs mobiles AS3? Je suis au courant d'au moins un qui a rencontré ce problème. Peut-être que vous pouvez proposer un forum où je peux demander. Merci – user2233677