Comment redimensionner des images avec du Jav

Fermé
Ifuseeknicky - Modifié par Ifuseeknicky le 28/07/2011 à 14:32
 alili - 26 nov. 2011 à 02:57
Bonjour, actuellement en train de créer un site sur Blogger je suis confronté à un problème de dimensions d'images !

Blog Address: http://blogmpocom.blogspot.com/
Navigateurs(s) Nom/Version (ex: Firefox 4, Internet Explorer 8): Firefox 4, Chrome

La vignette recadre les images selon le format 274 (width) X110 (height) pxl. Voilà pourquoi les images, même rectangulaires, sont déformées. Je voudrais que les images des vignettes ne soient pas déformées, quitte à ce qu'elle soit recadrées/découpées automatiquement. Je veux que l'image de la vignette mesure 274x110 pixels.

Voilà le Javascript en question.

function createSummaryAndThumb(pID){
var div = document.getElementById(pID);
var imgtag = "";
var img = div.getElementsByTagName("img");
var summ = summary_noimg;
if(img.length>=1) {
imgtag = '<span style="text-align:center; margin-bottom:10px;"><img src="'+img[0].src+'" width="'+img_thumb_width+'px" height="'+img_thumb_height+'px"/></span>...
summ = summary_img;
}

....... (ces points ne sont pas dans le Javascript, ils servent juste à différencier les 2 morceaux de code dans ce post)

function createSummaryAndThumbF(pID){
var div = document.getElementById(pID);
var imgtag = "";
var img = div.getElementsByTagName("img");
var summ = summaryf_noimg;
if(img.length>=1) {
if(thumbnail_modef == "float") {
imgtag = '<span style="float:left;margin:0px 10px 10px 0;"><img src="'+img[0].src+'" width="'+img_thumbf_width+'px" height="'+img_thumbf_height+'px"/></span...
summ = summaryf_img;
} else {
imgtag = '<div style="padding:0px" text-align="center"><img src="'+img[0].src+'" width="'+img_thumbf_width+'px" height="'+img_thumbf_height+'px"/></div>...
summ = summaryf_img;
}
}

J'ai tenté plusieurs trucs mais l'image dans la vignette est soit déformée ou bien la vignette et l'image sont de la même taille...Comment faire ?

Merci par avance !!!

7 réponses

Hello,

Je te propose de passer par du jQuery :

La technique consiste à récupérer la taille de tes images et de calculer un scale afin de le resizer en conservant les proportions initiales :

myWidth = $("img").width();
myHeight = $("img").height();

scale = Math.min(274/myWidth, 274/myHeight);

$("img").width(myWidth*scale);
$("img").height(myHeight*scale);

Le code devra certainement être adapté en fonction de tes besoins notemment en terme de ciblage d'elements HTML.

Tiens moi au courant.
0
ifuseeknicky
28 juil. 2011 à 17:41
Merci pour ta réponse ! Mais tu crois que je peux calculer un scale car les images sont de taille différentes...Ces vignettes sont faites a partir des images incluses dans les messages du blog. Dois-je redimensionner toutes les images selon une taille précise ?

A la base, le code du blog favorise les images rectangulaires. Mais on ne peut pas toujours avoir des images rectangulaires, d'où ma question.

Bon, je vais remplacer le code Javascript par ton code Jquery. Si tu entends une explosion, ça sera moi... ;-)
0
Oui tu peux l'utiliser sans problèmes !
Le but du scale est de calculer un ratio par rapport à une dimension standard que tu auras fixé. Moi j'ai pris comme standard 274px max de hauteur ou de largeur.

Si tes images font moins de ces dimensions, la fonction Math.min() prendra alors le ratio calculé en fonction de ces dimensions (inférieures à 274px).

Peu importe qu'elles soient carrés ou rectangulaires ;)

Tiens moi au courant
0
Bon, j'ai remplacé le code

function createSummaryAndThumb(pID){
var div = document.getElementById(pID);
var imgtag = "";
var img = div.getElementsByTagName("img");
var summ = summary_noimg;
if(img.length>=1) {
imgtag = '<span style="text-align:center; margin-bottom:10px;"><img src="'+img[0].src+'" width="'+img_thumb_width+'px" height="'+img_thumb_height+'px"/></span>...
summ = summary_img;
}


par

myWidth = $("img").width();
myHeight = $("img").height();

scale = Math.min(274/myWidth, 274/myHeight);

$("img").width(myWidth*scale);
$("img").height(myHeight*scale);


et ça ne marche pas.

Désolé d'être lourd, mais j n y comprends rien : S
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Essaye comme ça :
function createSummaryAndThumb(pID){
   myWidth = $("#"+pID+" img").width(); 
   myHeight = $("#"+pID+" img").height(); 

scale = Math.min(274/myWidth, 274/myHeight); 

$("#"+pID+" img).width(myWidth*scale); 
$("#"+pID+" img).height(myHeight*scale);
}


Si ça ne fonctionne toujours pas essaye de me mettre ton code HTML généré pour que je vois comment récupérer tes images en jQuery.

Chose importante également, j'espère que tu as chargé le jQuery dans ton head ...

(http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js)
0
J'ai mis ton code et ça ne marche toujours pas. Le Jquery est bien présent dans la balise head.

Voilà un lien de téléchargement direct pour le modèle du blog
http://upload.stabland.fr/fichiers/files17/templatecodejavascript.xml
0
Bonjour,

Je rencontre le même problème, avez-vous par le plus grand des hasards trouvé une solution ?
0