Redimensionner image

Résolu/Fermé
Helloween77 Messages postés 93 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mai 2015 - Modifié par Helloween77 le 16/03/2012 à 14:43
 ReDLoG - 17 mars 2012 à 00:02
Bonjour,

J'ai eu besoin de mettre au point une fonction qui redimensionne l'image si la largeur ou la hauteur est trop grande.... Fonction qui marche puisque je l'ai testé sur des images contenus dans un dossier. Le problème est que les images affichés sur le site où je travaille proviennent d'un site hébergeur d'images, donc je voulais savoir s'il y avait quand même un moyen de les redimensionner à l'affichage?

Voilà comment je fais appel à ma fonction, la variable $image faisant donc référence à l'adresse où est stockée l'image :
<img <?php fctaffichimage($image,50,60) ?> align="left" alt="" />

Là ça n'affiche plus rien, je me dis que c'est peut-être parce que $image est une url, mais je ne sais pas comment faire autrement...

Je ne sais pas si quelqu'un pourra m'aider, mais je tente et remercie d'avance ceux qui me répondront :)


A voir également:

3 réponses

Bonjour,
Sans avoir le contenu de la fonction fctaffichimage() il va être difficile de te dépanner, en attendant, corrige ta balise <img> de cette manière :
<img src="<?php fctaffichimage($image,50,60); ?>" align="left" alt="" /> 

P.S. : Je suppose que ta fonction renvoie un résultat en faisant appel à echo, sinon ça n'affichera rien si c'est un return...
0
Helloween77 Messages postés 93 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mai 2015 1
Modifié par Helloween77 le 16/03/2012 à 17:32
Bonjour,
En effet je fais un echo. Voilà la fonction (qui comme je le disais marche impec avec une image situé dans un dossier) :


function fctaffichimage($img_src, $W_max, $H_max) {
if(file_exists($img_src)) {

//lit les dimensions de l'image source
$img_size=GetImageSize($img_src);
$W_src=$img_size[0]; //largeur source
$H_src=$img_size[1]; //hauteur source

if(!$W_max) { $W_max=0; }
if(!$H_max) { $H_max=0; }

//teste les dimensions tenant dans la zone
$W_test=round($W_src * ($H_max / $H_src));
$H_test=round($H_src * ($W_max / $W_src));

//si l'image est plus petite que la zone
if($W_src<$W_max && $H_src<$H_max) {
$W=$W_src;
$W=$W_src;
//sinon si $W_max et $H_max non definis
} else if($W_max==0 && $H_max==0) {
$W=$W_src;
$H=$H_src;
//sinon si $W_max libre
} else if($W_max==0) {
$W=$W_test;
$H=$H_max;
//sinon si $H_max libre
} else if($H_max==0) {
$W=$W_max;
$H=$H_test;
//sinon les dimensions qui tiennent dans la zone
} else if($H_test > $H_max) {
$W=$W_test;
$H=$H_max;
} else {
$W=$W_max;
$H=$H_test;
}

} else { //si le fichier image n'existe pas
$W=0;
$H=0;
}


//Affiche les dimensions optimales
echo ' src="'.$img_src.'" width="'.$W.'" height="'.$H.'" ';
}
0
Après test avec une url absolue d'une image située sur un serveur distant, la fonction file_exists() renvoie false pour une image (fichier) dont les droits d'accès sont protégés par le safe mode.
Voir sur ce sujet dans la doc PHP => http://fr2.php.net/manual/fr/function.file-exists.php
0
Helloween77 Messages postés 93 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mai 2015 1
Modifié par Helloween77 le 16/03/2012 à 22:43
Merci de m'avoir dit d'où vient le souci =)

Mais donc peut-on contourner le problème ou sera t il impossible d'obtenir le redimensionnement? (J'ai essayé d'enlever le file_exists() pour voir mais ça n'a rien changé d'ailleurs)
0
On ne peut pas contourner le safe mode, c'est une protection et heureusement que ça existe sinon n'importe qui pourrait faire n'importe quoi sur les fichiers d'un serveur distant sans avoir en avoir les droits!
0
Helloween77 Messages postés 93 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mai 2015 1
16 mars 2012 à 23:34
Bonsoir,

Sans contourner le safe mode je me disais qu'il y avait peut-être une astuce pour arriver à ce que je cherche... Le mec pour qui je fais le site, m'a dit que bientôt il aimerait héberger les images sur son propre serveur, pensez vous que ça pourrait changer quelque chose?

Sinon merci encore de m'avoir expliqué =)
0
Si il héberge les images sur son serveur et que ce serveur héberge aussi le script contenant la fonction, il ne devrait pas y avoir de souci, dans le cas contraire, je crains qu'il n'y ait rien à faire mis à part de tester la fonction fctaffichimage() en virant la condition if(file_exists())...
0