Aide - Recherche - Membres - Calendrier
Version complète : Y a t'il un codage pour ne pas degrader une photo en redim ?
Centre de Formation Flash - Forums Adobe Flash > Adobe Flash > Programmation Actionscript > Actionscript 2
LDL
.

bon !
voila j'expose ma question :

sur une frame 1600x1200 donc destinee a de grandes resolutions deja,
1920x1200 et 1600x1200, je pose une photo en 1050 pixels de hauteur.

Attention, c'est de la haute definition, donc pas simplement une image genre wallpaper mais reellement une photo !


j'y met un code derrreire, la photo se redimensionnera selon la taille de la fenetre et gardera sa proportion du genre :

la hauteur de la photo sera tant de la hauteur de la fenetre,
et la largeur de la photo sera tant toujours de la hauteur de la fenetre.

Ainsi la photo garde le meme rapport, et se redimensionne.
la photo au depart est donc en grand format et tout ca est destine non pas a des resolutions plus grandes mais plus petites genre 1024x768.


Mais voila, la photo est degradee, meme avec une reso 1920x1200 et 4 barres d'outils du navigateur, en effet un effet de lignes brisees qu'on appelle aliasing ou crenelage se produit, sans parler de zones plus pixelees, donc avec des degrades pixels moins fins.



Existe il une solution flash pour palier a cela ou cela est il redibitoire ?


Je connais deja une solution mentionnee sur le net, qui est de faire reconnaitre la resolution du visiteur et selon cette reconnaissance diriger le chargement des photos en fonction. Mais cela veut dire qu'il faut prevoir a l'avance plusieurs fichiers pour chaque photo dans des tailles differentes, ce qui resulte d'un travail epouvantablement lourd, presque ingerable pour moi dans le cas de plusieurs dizaines de galeries composees chacune de plusieurs dizaines de photos.....

Donc si vous avez des pistes, elles sont les beinvenues d'autant plus que c'est urgent !
Merci !

Autre point :

je mets un code de redimensionnement sur la scene de mon swf qui contient notamment un clip container par rapport a la fenetre, mais pas de code pour le container.

Ensuite je mets un code de redimenssionnement sur la scene de mon swf qui contient la photo, et qui va etre appele dans le container.

est ce deja une bonne methode et si non peut elle influer sur la degradation image lors du redimensionnement ou faut il faire autrement ?





J'ai oublie de preciser :

je charge les photos directement dans le flash donc je ne passe pas par un objet dynamique. J'ai deja essaye le lissage mais ca n'empeche pas la degradation de la photo vraiment. Il existe cependant bien une degradation, attention, la encore nous parlons de photos en haute definition, donc pour des yeux avertis comme les photographes professionnels. Sur le screen suivant, le degradation constatee est terrifiante, pour certains
clients cela ne passent pas du tout, mais alors pas du tout !

En revanche, il existe bien forcement une methode !
J'en veux pour preuve ce lien :
http://www.fabian-guignard.ch/new.htm

Autre indication, si j'ai une photo et que je la diminue dans un logiciel adapte de gestion image comme photoshop, en diminuant la photo on voit tres nettement la degradation (aliasing sur les cheveux).
Si je mets la fenetre du navigateur affichant ce lien et la redimensionne a la meme taille que cette dite photo, cote a cote on voit tres nettement que le redimensionnement de ce site ne degrade en rien la photo (pareil, controle sur le haut du crane, cheveux non creneles).

screen pour voir la degradation, visionner ce fichier en taille reelle

Donc il existe bien forcement une methode ou un script, la preuve certains sites arrivent a gerer le redimensionnement sans degradation....
(j'ai d'autres liens d'exemples mais bon un seul ca suffit je pense...wink.gif ).
J'avais pense a la fonction high_quality mais cela ne donne rien....
sad.gif

J'ai oublie de preciser que actuellement mon redimensionnement subit le meme probleme que un redimensionnement de photo dans un logiciel adapte comme photoshop. Peu etre aussi que tout simplement je m'y prend mal d'une point de vue construction flash, vu que je suis a ce niveau la quand meme faut bien dire une banane !

JE reprecise quand meme ma facon de faire, des fois que j'aurai tout faux ! :

j'ai un swf.

dedans, des clips donc un clip qui contient les boutons. (une bande de petites photos en fait)
en dessous un autre clip appele container ou va etre charge le swf qui contient la photo.
(en dessous car il doit passer en dessous des thumbnails)

Sur chaque bouton, je met le code suivant (claissque je crois) :

Code
on (release){
    _parent._parent.container.loadMovie ("grandephoto.swf");
}


(parent parent a cause bien sur de l'arborescence)

Sur ce swf, des scripts de redimensionnement et repositionnement sur la scene pour chaque clips mais aucun script
pour le container (peu etre est ce un tort, je devrais le mette la, je suis entrain de faire les tests..).

Ensuite sur le swf appele qui contient la photo, un script de redimensionnement, peu etre aussi
que la j'a tout faux cependant la photo est tres bien redimensionnee e repositionnne, de ce cote la tout fonctinne tres bien, mais le redimensionnement etant peu etre ultrasensible, peu etre qu'il existe une consequence que j'ignore :

Code
function Dimensionne_fond () {
//fond._align = "TL";
fond._width = Stage.width;
fond._height = Stage.height;
//fond._x = Stage.width/1600;
//fond._y = Stage.height/1200;
fond._x = 0;
fond._y = 0;
}
function Redimension_Photo () {
//Photo._align = "TL";
Photo._width = Stage.height*1.201666;
Photo._height = Stage.height/1.142857;
Photo._x = Stage.width/48.4848;
Photo._y = Stage.height/36.3636;
}
onSelfEvent (load) {
Redimension_Photo()
Stage.align = "TL";
Stage.scaleMode = "noScale";
var sizeListener = new Object();
sizeListener.onResize = function() {
Dimensionne_fond();
Redimension_Photo();
};
Stage.addListener(sizeListener);
Dimensionne_fond();  
}
onFrame (2) {
Redimension_Photo();    
}
onFrame (10) {
    stop();
}



ma scene est en 1600x1200.
tous les swf font la meme taille (la c'est sur je me suis pas fait chier, mais bon vu mon faible niveau en code, j'ai interet)
pour garantir le redimensionnement j'ai mis la fonction en frame 2, si je la met en frame 1, le redimensionnement ne se produit pas.

voila...
sad.gif


.
jGarin

si je ne me trompe, un swf est en 90 dpi alors qu'une bonne photo est en 300 dpi, d'où déjà une approximation a l'affichage, de plus vérifie la compression jpg de ton fla, un conseil, travail ta photo a affiché a la dimension désirée et a la définition désirée sans faire une page en proportionnelle (j'aime bien mais ça aide pas les photos)
paodao
salut

90 sur mac et 72 sur pc (je crois)
enfin ca c'est la resolution des ecrans, donc tout ce qui est afficher sur un ordi

si tu veux agrandir une image tu va forcement perdre de la qualité, flash peux pas creer les pixel qui manque, il est pas devin icon_wink.gif

ceci dis peux mettre ton image loader dans un bitmapdata et utiliser la propriete smooth pour lisser l'image
cela devrai l'ameliorer legerement

il me semble avoir lu que l'algo qui rediemnsionne les images dans flash n'etait pas tres bon des que tu depasser un redimensionnent inf a 0.5 ou sup a 2
et le truc pour y remedier et de modifier la taille de ton image en plusieur fois
si ton image doit etre reduite de 8 fois sa taille
tu la reduit plusieur dfois de *2 afin d'arriver a *8

a+
daniello
Quant on, voit ton exemple, c'est sûr que ça craint, le grain de peau est complètement déchiqueté !

Malgré ce que tu dis, je ne pense pas que la qualité de l'échantillonnage de flash soit comparable à celui de photoshop qui est nettement plus évolué.
La qualité d'une photo ne peut être conservée que sans aucun dimensionnement, qu'il soit flash, html, javascript, etc.
A tester quand même un reéchantillonnage sur une valeur entière (divisé par 2 sur un nombre de pixels d'origine pair)

Tu n'as pas le choix : La meilleure solution est celle que tu décris et qui consiste à détecter l'affichage et envoyer la bonne taille en pixel . Evidement ça fait beaucoup de boulot mais en limitant à 2 ou 3 tailles disponibles tu devrais simplifier la démarche.
LDL
.


bon !

Apres certaines recherches et pas mal d'essais, et des controles avec mon client photographe, j'ai trouve la soluce, que je poste ici évidemment pour celui qui va passer derriere avec le meme probleme !
wink.gif


La construction en fait importe, peu, seul compte le fait d'avoir 4 éléments réunis.

Dans mon cas, je précise quand meme les conditions de ma construction qui est un swf maitre en plugin 7 qui comporte un script de redimensionnement et repositionnement des differents clips qui contiennent mon design (fond, image, texte). Le swf contient aussi un clip vide appelé container vis a vis duquel il n'y a aucun script, et dans lequel le swf externe qui contient la photo va etre appelé.

Sur les boutons, un release qui appelle le swf externe photo dans le container vide et avec un code qualité qui va garantir le maintien de qualité de la photo lors de tout redimensionnement sans aucune dégradation. ce script est le suivant :

Code
on (release){
    _parent.container.loadMovie ("swfexterne.swf");        
    _quality = "BEST";
}


Sur la scene du swf externe qui contient la photo, un script de redimensionnement et repositonnement avec écouteur bien sur....


Pour garantir le résultat, voici les 4 éléments indispensables (sans un seul, rien ne fonctionne et la photo est systématiquement dégradée !) qu'il faut impérativement avoir :

* Photo en format BMP
* Anti-Alias autorisé (a activer lorsque l'on met la photo dans le flash)
* Utiliser la propriété _quality sur le bouton d'appel du swf externe.
* Le niveau de la propriété _quality doit etre impérativement : "BEST".

A noter que :
Si le niveau de la propriété _quality est activé seulement sur le niveau "HIGH", la dégradation a lieu exactement comme si il n'y aucun code.

(Tableau explicatif des niveaux de la propriété quality)



A noter aussi depuis flash player 5, la propriété _hightquality est déconseillée, au profit de la propriété _quality. Si la propriété _hightquality est utilisée, le niveau doit etre 2 impérativement.



Et pour finir, une mention pour la gestion :

qualité de la photo
- Fichier de départ : jpg HD en 240 dpi
- Sauvegarde du fichier lors de la mise au format : format BMP format windows 24bits/pixel. Poids : (dans mon cas) 4.26 Mo
- Chargement dans flash : compression : Au mieux (auto) : qualite 99% (poids final : 294 Ko)


voila. Le resultat est impeccable.
wink.gif



SUJET RESOLU.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.