Probléme d'affichage d'une image redimensionnée

atract Messages postés 2 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 18 novembre 2003 - 18 nov. 2003 à 12:28
bontbont Messages postés 5 Date d'inscription vendredi 21 janvier 2005 Statut Membre Derniè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!

Merci

Choubiroute :question)

5 réponses

rodolphe220180 Messages postés 1 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 15 avril 2004
15 avril 2004 à 16:05
Salut...j'ai le même problème que toi....as-tu trouvé une solution à l'heure actuelle ou une parade ?
Merci d'avance !
Rodolphe
0
SgtKabukinan Messages postés 106 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 23 janvier 2010
2 févr. 2005 à 12:56
tiens... je pensais avoir répondu....

Coder c'est une quête physique visant à atteindre la sublimation de la virtualité théorique.
0
SgtKabukinan Messages postés 106 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 23 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.
0
bontbont Messages postés 5 Date d'inscription vendredi 21 janvier 2005 Statut Membre Derniè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.
0

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

Posez votre question
bontbont Messages postés 5 Date d'inscription vendredi 21 janvier 2005 Statut Membre Derniè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 "";
0
Rejoignez-nous