atract
Messages postés2Date d'inscriptionmercredi 3 septembre 2003StatutMembreDernière intervention18 novembre 2003
-
18 nov. 2003 à 12:28
bontbont
Messages postés5Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention 3 octobre 2005
-
27 sept. 2005 à 16:51
Bonjour!
J'ais sur le site que je suis en train de developper une fonction javascript sevant à redimensionner des images :
function redimImage(inImg, inMW, inMH)
{
// Cette function recoit 3 parametres
// inImg : Chemin relatif de l'image
// inMW : Largeur maximale
// inMH : Hauteur maximale
var maxWidth = inMW;
var maxHeight = inMH;
// Declarations des variables "Nouvelle Taille"
var dW = 0;
var dH = 0;
// Declaration d'un objet Image
var oImg = new Image();
// Affectation du chemin de l'image a l'objet
oImg.src = inImg;
// On recupere les tailles reelles var h dH oImg.height; var w dW oImg.width;
// Si la largeur ou la hauteur depasse la taille maximale
if ((h >= maxHeight) || (w >= maxWidth)) {
// Si la largeur et la hauteur depasse la taille maximale
if ((h >= maxHeight) && (w >= maxWidth)) {
// On cherche la plus grande valeur
if (h > w) {
dH = maxHeight;
// On recalcule la taille proportionnellement
dW = parseInt((w * dH) / h, 10);
} else {
dW = maxWidth;
// On recalcule la taille proportionnellement
dH = parseInt((h * dW) / w, 10);
}
} else if ((h > maxHeight) && (w < maxWidth)) {
// Si la hauteur depasse la taille maximale
dH = maxHeight;
// On recalcule la taille proportionnellement
dW = parseInt((w * dH) / h, 10);
} else if ((h < maxHeight) && (w > maxWidth)) {
// Si la largeur depasse la taille maximale
dW = maxWidth;
// On recalcule la taille proportionnellement
dH = parseInt((h * dW) / w, 10);
}
}
// On ecrit l'image dans le document
document.writeln("");
};
J'ais un gros soucis : l'image s'affiche uniquement si on réactualise la page!!! Quelqu'un saurait-il me dire pourquoi! Perso je compren plus rien!
SgtKabukinan
Messages postés106Date d'inscriptionlundi 20 septembre 2004StatutMembreDernière intervention23 janvier 2010 2 févr. 2005 à 13:04
c dingue ca....
j'ai fais tout un post pour rien alors......
bien alors tout ça pour résumé ce que j'ai dis tout à l'heure ;)
Si ton image est trop lourde, le délai d'éxecution entre l'affectation de la source à l'objet image et le moment ou tu récupère la taille de l'image est trop court !
"Ton script" (déjà vu partout sur le web) fonctionner avec des petites images, la il redimensionne sans réduire la taille de l'image, ce qui explique que pour lui la taille est de 0x0 au moment ou tu lui demande (car pas encore dans le cache) et il affiche sur la page une image avec des dimensions nulles.
C'est pour ça que ca marche kan tu recharges, l'image étant dans le cache cette fois ci.
Bref rajoute juste une ligne à ton code, pour qu'il se recharge si l'image n'a pas eu le temps d'être chargée :
[...]
// On recupere les tailles reelles var h dH oImg.height; var w dW oImg.width;
if (!h && !w)
{
redimImage(inImg, inMW, inMH);
}
else
{
// Si la largeur ou la hauteur depasse la taille maximale
if ((h >= maxHeight) || (w >= maxWidth))
[...]
Coder c'est une quête physique visant à atteindre la sublimation de la virtualité théorique.
bontbont
Messages postés5Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention 3 octobre 2005 27 sept. 2005 à 11:25
Bonjour a tous,
j'utilise la meme fonction et bien sur j'ai le meme probleme... j'ai essayé la solution de SgtKabukinan mais cela ne change pas grand chose (au lieu d'avoir un point au premier affichage j'ai plus rien)...
Quelqu'un a t il résolu le probleme ? Si oui comment ?
merci beaucoup.
Vous n’avez pas trouvé la réponse que vous recherchez ?
bontbont
Messages postés5Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention 3 octobre 2005 27 sept. 2005 à 16:51
bon, j'ai pas réussi en javascript mais c'est possible en php (le code n'est pas de moi, je l'ai trouvé sur un autre site), je vous le laisse, ca peut toujours servir à quelqu'un :
$source=chemin_et_nom_de_votre_image;
// Taille à ne pas dépasser en pixels
$taillemax=60;
// On récupère les dimension initiales de l'image
@$img = getimagesize($source);
$x=$img[0];
$y=$img[1];
//si la hauteur ou la largeur de l'image est plus grande que $taillemax on redimensionne
if (($x>$taillemax) or ($y>$taillemax)) {
if ($x > $y)
{
$y=$y*(($taillemax)/$x);
$x=$taillemax;
}
if ($y > $x)
{
$x=$x*(($taillemax)/$y);
$y=$taillemax;
}
if ($y == $x)
{
$x=$taillemax;
$y=$taillemax;
}
}
// On affiche l'image
echo "";