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

jQuery Discussion :

Problèmes taille des images 1er chargement ou ctrl+F5


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 15
    Par défaut Problèmes taille des images 1er chargement ou ctrl+F5
    Bonjour à tous

    Je vais essayer d'exprimer mon problème au mieux, bien que ce ne soit pas si facile

    Voilà je développe actuellement 2 plugin jQuery, un pour faire une galerie d'image et un pour une galerie de vidéos (hébergés sur les principales plateformes de vidéos).

    J'affiche une liste de miniatures qui correspondent (quand cela est possible) aux miniatures des vidéos. Sinon je met une miniature par défaut.

    Bref, je rencontre le même problèmes pour mes 2 plugins. En effet, dans le plugin pour les images, je retaille forcément les images trop grande (ainsi que la miniature correspondante), et pour les miniatures de vidéos pareil.

    Je fais tout ceci en javascript(+jQuery), mais le problème c'est que lorsque je fait un Ctrl+F5 ou parfois même au premier chargement de la page (surtout pour le plugin des vidéos), les images bugs et se retrouvent avec une taille de 0 width et 0 height.

    Bien évidemment ce n'est pas ma fonction de retaille d'images qui retaille mal, puisque celle-ci marche très bien une fois que je fait F5.

    J'ai également un test au début de mon plugin qui fait patienter l'exécution de celui-ci tant que toutes les images ne sont pas chargés (car chrome n'aime pas ça).

    J'ai l'impression que dans ces cas là, le navigateur envoi tout simplement ma fonction bouler et retourne donc des tailles de 0.

    Et j'ai beau essayer de faire un test ensuite pour refaire une nouvelle fois la retaille si la largeur ou la hauteur sont égales à 0, mais cela ne change rien..

    Voici le code de ma fonction, peut-être est-elle mal écrite ?

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    // Redimensionne une image
    newImageSize: function(thisWidth, thisHeight, maxWidth, maxHeight, thumb) {
     
    	// Definition des dimensions max (passe en parametre ou non)
    	if (!maxWidth || maxWidth == '')
    		var maxWidth		= this.zeGally.subsettings.maxWidth;
    	if (!maxHeight || maxHeight == '')
    		var maxHeight	= this.zeGally.subsettings.maxHeight;
     
    	var newWidth		=	thisWidth;
    	var newHeight	= thisHeight;
     
    	// Dimensions max des miniatures si passe en parametre
    	if (thumb === true) {
    		maxWidth	= this.settings.maxThumbWidth;
    		maxHeight	= this.settings.maxThumbHeight;
    	}
     
    	// Width ou Height trop grande
    	if (thisWidth >= maxWidth || thisHeight >= maxHeight) {
    		// Width et Height trop grande
    		if (thisWidth >= maxWidth && thisHeight >= maxHeight) {
    			// On prend la plus grande valeur
    			if (thisWidth > thisHeight) {
    				newWidth		= maxWidth;
    				newHeight	= parseInt((thisHeight * newWidth) / thisWidth, 10);
    			}
    			else {
    				newHeight	= maxHeight;
    				newWidth		= parseInt((thisWidth * newHeight) / thisHeight, 10);
    			}
    		}
    		// Width trop grande
    		else if (thisWidth >= maxWidth) {
    			newWidth		= maxWidth;
    			newHeight	= parseInt((thisHeight * newWidth) / thisWidth, 10);
    		}
    		// Height trop grande
    		else {
    			newHeight	= maxHeight;
    			newWidth		= parseInt((thisWidth * newHeight) / thisHeight, 10);
    		}
    	}
     
    	// Renvoi des nouvelles dimensions stockees dans un objet
    	var sizeImage	= {'newWidth' : newWidth, 'newHeight' : newHeight};
    	return sizeImage;
     
    },
    J'espère que vous avez compris ce que je tente d'expliquer, n'hésitez pas si vous avez des questions et merci d'avance pour votre précieuse aide

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Par défaut
    Niveau HTML pour les images tu as quoi ? Parce qu'il y a plein de plugin qui font déjà cela miniature et après un content qui se met à jour au clic ou bien une lightbox qui s'ouvre.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 15
    Par défaut
    Ben niveau HTML c'est des balises img, ensuite le plugin les récupères (avec toutes les infos qui vont bien) et il les reconstruit en fonction des paramètres que l'utilisateur a rentré.

    Je sais qu'il y a pleins de plugins qui existent pour ça, mais il y a toujours une fonctionnalité manquante que je veux, et puis je souhaitais faire mon propre plugin donc voilà

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Par défaut
    Bah pour les images, je pense que l'utilisateur peut paramétrer une taille des vignettes, pourquoi tu ne mets pas un truc du genre lors de ta boucle sur chaque élément image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $(this).attr("width",param_width_vignette);
    $(this).attr("height",param_height_vignette);

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 15
    Par défaut
    Ben une fois que la fonction de retaille est faites et a renvoyé les nouvelles dimensions je fais bien ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $(this.zePic).find('img').attr('width', newSize.newWidth);
    $(this.zePic).find('img').attr('height', newSize.newHeight);
    this.zePic étant le div contenant l'image en cours de traitement.

    J'ai l'impression que ce bug ne se fait que sur Firefox, les autres ne me l'ont en tout cas pour l'instant pas fait... (Chrome, IE).

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Par défaut
    Essaye sans la fonction de retaille, juste le nouveau param width et height

Discussions similaires

  1. Taille des images
    Par troumad dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 14/12/2006, 20h19
  2. Taille des images en mémoire
    Par drcd dans le forum OpenGL
    Réponses: 4
    Dernier message: 23/06/2006, 16h01
  3. Réponses: 3
    Dernier message: 19/04/2006, 12h16
  4. Taille des images....
    Par chronos dans le forum Windows
    Réponses: 2
    Dernier message: 10/06/2005, 13h06

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