|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 6 ![]() |
Bonjour,
Je fais actuellement un concours de photos et le problème qui est d'après mes multiples recherche assez connu des webmaster qui manipulent des photos : il faut donc redimensionner les photos côté client avant de les envoyer sur le serveur. Sachant qu'il est impossible de faire ça en javascript, j'ai utilisé flash mais je ne suis vraiment pas initié a Flash. Pour l'instant j'ai fais un petit script Flash qui permet : - de demander a l'utilisateur une photo (filereference.browse() ) - Puis de transformer cette photo en displayObject pour la redimensionner et avoir la taille (height et width) du bitmapData qui va etre créé - Création d'un bitmapData avec les height et width que j'ai eu précédemment - methode draw sur ce nouveau bitmapdata avec en argument le displayObject redimentionné - Comme apparement draw ( ) m'a dessiné le displayObject *tel qu'elle*, pas redimensionné, j'applique une matrice de redimensionnement. - J'encode ensuite avec getPixel() une chaine qui ou chaque pixel sera encodé en hexadecimal, la chaîne ressemblera a "0f0e872f0a8e0ff775885a4b5 etc....." - Envoi avec URLLoader de cette chaine a mon serveur PHP qui générera un jpg en décodant la chaine Il y a 3 problèmes majeurs : - La qualité de l'image résultante est vraiment médiocre (même en mettant 100 pour la qualité du jpg créé en PHP, ce doit etre la matrice de draw() qui fait ca ..) - Le temps d'envoi est très long pour une image de taille max 600*600 - Il n'y a pas de barre de progression sur flash pour voir le nombre d'octets envoyé sur le total pour les URLLoader (il y en mais c'est pour les octets recu pas envoyés) Sans compter la complexité et le temps fou que ça m'a mis pour concevoir, au moins 2 semaine Bref est-ce qu'il y aurai un moyen, avec Flash d'encoder un jpg directement dans flash(reduction du temps d'envoi), d'avoir une progressBar qui gère l'envoi des octets, et d'avoir une image de meilleur qualité .. Code :
Code :
Jerem |
||||
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Développeur informatique Inscription : septembre 2006 Messages : 138 ![]() |
Salut,
J'ai peut être pas de réponses toutes faites à tes problèmes mais j'ai été amené à faire un transfert d'image prise par webcam ou uploadé de flash vers php pour l'envoyer en pièce jointe dans un mail. Je me suis beaucoup aidé de ses articles : ftp://ftp-developpez.com/flash/cours...-ByteArray.pdf ftp://ftp-developpez.com/flash/cours...h-Remoting.pdf Bonne chance ;-) |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Simon PaitraultDéveloppeur PHP | Flex Inscription : octobre 2007 Messages : 74 ![]() |
Salut,
En gros tu dois récupérer l'image via un browse, la stocker dans une variable File. Ensuite tu peux soit l'encoder avec Base64Encoder (voir doc : http://help.adobe.com/en_US/FlashPla...64Encoder.html) ou encoder avec PNGEncoder (voir doc : http://help.adobe.com/en_US/FlashPla...NGEncoder.html). ++ |
|
00
|
|
|
#4 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 6 ![]() |
Merci de vos réponse
J'ai trouvé finalement une solution pas mal : utiliser JPGEncoder de la classe Corelib de AS3 pour encoder l'image, mais un nouveau problème survient, c'est que je n'ai toujours pas de progressbar parce que pour cela, il faudrai utiliser pour l'envoi un filereference, et filereference ne gère apparemment que le fichier source de l'utilisateur et PAS n'importe quel fichier byteArray ( en l'occurence, l'image JPG crée avec jpgEncoder) : SAUF dans un environnement Adobe Air mais j'ai pas envie de faire telecharger Air a mes utilisateurs. Autre problème, beaucoup plus important (la progressbar finalement c'est pas si grave) : la qualité de l'image est "pourri", meme en appliquant le smooting de draw() a la création du bitmapdata. J'ai remarqué que la fonction php imagecopyresampled() faisait cela très bien, serai-il possible d'appliquer le meme algorytme ici en flash ? Merci pour vos réponses |
|
|
00
|
|
|
#5 | |
|
Invité régulier
![]() Sébastien Inscription : novembre 2010 Messages : 14 ![]() |
Citation:
Je suis peut-être Hors Sujet, mais pourquoi ne pas utiliser une fonction php ? De nombreuses fonctions de manipulation d' images sont disponibles en PHP. |
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 6 ![]() |
Lol, peut etre un peu plus
Parce que mon hebergeur autorise un upload de maximum 2Mo et si je controle pas coté client j'upload n'importe quoi sur mon serveur et je peux meme pas controler (j'ai essayer), aprés un long temps d'attente mon serveur renvoi pas de réponse,, et en plus quoi de mieu pour le client de redimentioner a sa place ses images, d'avoir une progressbar pour suivre l'avancement de son telechargement et tt Bon finalement, j'ai trouvé une solution a mon probleme de qualité meme si un peu du "rafistolage" : appliquer un filtre Blur a 1,2 d' "intensité" et appliquer 1 fois, le rendu est assez proche de la vraie meme si c'est pas trop encore ca .. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com