8795 sujets

Développement web côté serveur, CMS

Bonjour,

pour un site de e-commerce, je dois générer des vignettes qui auraient une dimension (horizontale) maximum...

Jusqu'à présent, l'image était simplement redimensionnée avec les propriétés width et height de <img>, ce qui n'est pas une bonne solution, vous en conviendrez.

Je pensais donc redimensionner l'image en PHP.

Je suis sur quelques pistes avec

ImageCreateTrucColor
ImageCopyResampled
etc...

Par contre je n'arrive pas à afficher l'image.

Je ne sais pas s'il faut que cette image soit sauvegardée sur le serveur ou si on peut seulement l'appeler avec une variable.

Comment faire si les images sont indifféremment des gifs ou des jpg ?

Je n'aimerais spécifier que la largeur, la hauteur pouvant varier, ceci pour ne pas déformer mon objet.

Qqn pourrait m'aider ??
Salut
grace a la librairie GD, tu peux enregistrer des images, existantes ou inéxistantes...
Dans ton cas, l'image existe.
Ensuite tu peux soit demander à php de renvoyer une image au lieu d'une page web, le header sera modifié!
Soit on demande à PHP d'enregistrer l'image dans un fichier.

La deuxième solution te permetera d'avoir une image enrigistrée et donc plus aucune modification possible( image statique).
La premiere elle te donnera une image dynamique, puisque générée a chaque connexion.

Par exemple pour générer une image déjà existante et la redimmensionner (image dynamique) en jpg:
<?
$source = imagecreatefromjpeg("momimage.jpg"); // source de ton image
$destination = imagecreatetruecolor(200, 150); //image miniature vide crée

// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);

// On crée la miniature
imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);

// On enregistre la miniature sous le nom "mini_image.jpg"
imagejpeg($destination, 'mini_image.jpg');
?> 


Tu peux créer aussi des thumbs ou miniatures via des scripts
en voici un ici
Modifié par Ti_ouf (14 Jun 2005 - 11:28)
Merci ! L'image s'affiche bien, c'est deja un bon début !

Je pense qu'il faut encore faire une condition pour voir si l'image est deja présente sur le serveur pour ne pas générer la miniature inutilement ?

PAr contre comment faire pour ne préciser que la largeur afin que l'image ne se déforme pas ? Elles ont en effet toutes des proportions totalement différentes Smiley sweatdrop
tout à fait, si tu généres une miniature vide alors que ton image a redimmensionner n'existe pas ...

a écrit :
PAr contre comment faire pour ne préciser que la largeur afin que l'image ne se déforme pas ? Elles ont en effet toutes des proportions totalement différentes


Là, c'est plus compliqué je pense!
Surtout si tu as des images en format portrait ou paysage...
Une condition, concernant la largeur!
tu attribues 2 modes de dimmensions differents!
1 mode de dimmension pour les image portrait
et 1 mode pour les image paysage!
tu conditionne le tout sur la largeur: si largeur > 250px alors c'est une image paysage et donc je lui attribue des dimmension type prédéfinies
Modifié par Ti_ouf (14 Jun 2005 - 12:13)
j'ai trouvé un script qui convient bien

http://php.benscom.com/manual/en/function.imagecopyresampled.php[/url]
exemple 2

Par contre je comprends pas, mon gif est toujours sur fond noir ?

Pourtant j'essaie de mettre

$white = imagecolorallocate($image_p, 255, 255, 255);


ca devrait donner un fond blanc normalement, la première couleur qu'on défini...

Edit : bon pour finir j'ai utilisé
imagefill($image_p, 0, 0, 0xFFFFFF);


qui lui fonctionne
Modifié par Noisequik (14 Jun 2005 - 14:08)