Redimensionner une image

Ombre
Invité n'ayant pas de compte PHPfrance

28 févr. 2005, 16:33

Bonjour,

Sur une page de mon site j'ai une case de 200 x 200 pixels ou s'affiche les photos des utilisateurs. Je récupère les photos dans un répertoire apres avoir appelé la BDD. J'utilise un code très simple pour afficher ces photos :

Code : Tout sélectionner

<?echo '<img src=\''.$image[photo].'\' border="0" width="200" height="200">';?>
Le probleme c'est que ça déforme toutes les photos qui ne font pas 200 x 200. Donc, ce que j'aurais voulu savoir, c'est comment faire pour afficher la totalité d'une photo quelle que soit sa taille, dans ma case de 200 x 200 pixels sans déformer celle-ci ? Je vous remercie pour votre aide.

Eléphant du PHP | 200 Messages

28 févr. 2005, 17:29

Le mieux etd e se tourner vers de la librairie GD
ou alors bricole un truc à la barbare avec getimagesize().
Univers divided by 0 - cucumber error - reboot

Mammouth du PHP | 1885 Messages

28 févr. 2005, 17:54

Si tu possèdes PHP5, il y a cette classe PHP5 qui te permet de redimensionner des images:
http://www.phpfrance.com/forums/voir_sujet-34.php
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Ombre
Invité n'ayant pas de compte PHPfrance

01 mars 2005, 12:08

Bonjour,

Mon hébergeur ne dispose pas de PHP 5 encore.
J'essaie d'utiliser getimagesize() mais je rencontre un probleme avec le chemin $path

Mes images sont stockés sous la forme de la variable suivante :
$photo="../images/photo.jpg";

Dans le script que j'essaie d'utiliser, d'adapter à ce que je veux faire il y a les lignes suivantes :

Code : Tout sélectionner

$path="../images"; $red = getimagesize("$path$photo.$type");
Le problème c'est que ça :
$image = "../images../images/photo.jpg";

je me retrouve avec le chemin en double car le chemin comme je vous l'ai expliqué est déjà inclus dans la variable qui stocke les photos.

Comment faire pour récupérer la variable $photo et en extraire le chemin déjà inclus, pour que getimagesize puisse redimensionner mes images en utilisant la variable $path ?

J'espère ne pas avoir été trop confus dans mes explications. Merci

Eléphant du PHP | 334 Messages

01 mars 2005, 12:14

En enlevant $path tout simplement ça marche pas ?

Code : Tout sélectionner

$path="../images"; $red = getimagesize("$photo.$type");

Invité
Invité n'ayant pas de compte PHPfrance

01 mars 2005, 12:57

Non, sinon j'ai le type en double : $photo.jpg.jpg
:(

Eléphant du PHP | 334 Messages

01 mars 2005, 13:03

Code : Tout sélectionner

$path="../images"; $red = getimagesize("$photo");
Bah alors en enlevant aussi le type ??

ViPHP
fab
ViPHP | 2657 Messages

01 mars 2005, 13:04

bah
$red = getimagesize($photo); 

Invité
Invité n'ayant pas de compte PHPfrance

01 mars 2005, 13:31

Oui comme ça, ça marche, mais la photo ne s'affiche pas quand même.

Donc je récupère apres ma requete sql la variable qui contient le chemin vers la photo :

$image=$image[photo];

ensuite je modifie le script :

$sm="200";

Code : Tout sélectionner

function resize($image,$sm){ $path=$image; $red = getimagesize($path); $largeur=$red[0]; $hauteur=$red[1]; $facteur=($largeur/$sm); if($largeur < $sm){ $sm_largeur=$largeur; $sm_hauteur=$hauteur; } else{ $sm_largeur=($largeur/$facteur); $sm_hauteur=($hauteur/$facteur); } }
Le probleme est toujours le même malgré tout car je dois afficher l'image et je n'ai qu'un petit point presque invisible qui s'affiche sur ma page php :

Code : Tout sélectionner

resize("$image","$sm"); echo "<img src='$image' height='$sm_hauteur' width='$sm_largeur' border='0'>";
Le probleme vient du fait que ce script n'est pas compatible avec ma variable car elle contient deja le path. Enfin je ne sais plus, si vous avez une idée. merci

Eléphant du PHP | 334 Messages

01 mars 2005, 14:20

Fais un echo de largeur et hauteur juste après ça :

Code : Tout sélectionner

$largeur=$red[0]; $hauteur=$red[1];
Pour voir ce qu'il sort

Ombre
Invité n'ayant pas de compte PHPfrance

01 mars 2005, 14:44

Les variables sont vides... :x

Invité
Invité n'ayant pas de compte PHPfrance

01 mars 2005, 18:12

Je ne trouve pas de réponse pour mon cas, je ne trouve que des solutions pour afficher des galeries de miniatures.

Je recapitule en essayant de mieux m'expliquer. Les utilisateurs peuvent cliquer sur n'importe quel lien sur le site. Chaque lien affiche une page avec une photo différente. Ces photos sont stockés dans un répertoire sur le serveur, et la base de données conserve en mémoire le chemin vers ces photos. Chaque lien appele la base de données pour afficher la photo correspondante au lien ou l'on a cliqué.

Avec les exemples cités plus haut j'ai ces erreurs qui s'affichent.

Warning: getimagesize(): open_basedir restriction in effect. File(../images) is not within the allowed path(s):

Warning: getimagesize(../images): failed to open stream: Operation not permitted :

Invité
Invité n'ayant pas de compte PHPfrance

01 mars 2005, 23:06

Comment je pourrais faire pour récupérer les dimensions d'une image.
je récupere la variable

$image=$image['photo'];

cette variable est egale a "../images/photo.jpg";

il y a le chemin ou se trouve la photo et le nom de la photo.
J'ai essayé

$size=getimagesize("$image");

mais lorsque je fais un echo j'ai une erreur,
Warning: getimagesize(): open_basedir restriction in effect. File(../images) is not within the allowed path(s):

j'ai l'impression que le chemin empeche php de calculer les dimensions de l'image. apparemment il faut que la variable ne contiennent que le nom de l'image. n' y a t'il pas une autre solution ?