IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 1 & ActionScript 2 Discussion :

Y a t'il un codage pour ne pas degrader une photo en redim ?


Sujet :

ActionScript 1 & ActionScript 2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 66

    Informations forums :
    Inscription : Mars 2008
    Messages : 24
    Par défaut [RESOLU] Codage pour ne pas degrader une photo en redim
    .



    bonjour a tous !
    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... ).
    J'avais pense a la fonction high_quality mais cela ne donne rien....


    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    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...



    .

  2. #2
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 66

    Informations forums :
    Inscription : Mars 2008
    Messages : 24
    Par défaut
    .


    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 !



    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    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.




    SUJET RESOLU.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/12/2012, 19h13
  2. Réponses: 5
    Dernier message: 11/10/2010, 09h16
  3. [AJAX] Recherche de tutoriel pour ne pas recherger une page
    Par Gantilool dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/04/2008, 15h03
  4. Réponses: 8
    Dernier message: 30/11/2007, 14h15
  5. requête pour ne pas surcharger une base
    Par stef1330 dans le forum SQL
    Réponses: 1
    Dernier message: 30/10/2007, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo