OVH Cloud OVH Cloud

generation de vignette

6 réponses
Avatar
Laforest
Bonjour,

Je suis en train d'automatiser un site, et j'ai une petite question :

A partir d'une image (jpeg ou png ou gif), est-il possible de créer une
autre image à sauvegarder sur le site et qui soit une vignette de la
première?

J'ai lu la doc sur php de nexen et je n'ai rien vu de bien concluant. Ce
problème n'est pas grave en soit, puisque je peux demander que ceux qui
mettent des photos crée eux-même leurs vignettes, mais je cherche au
maximum à leur simplifier le travail; ce qui pourrait en plus me permettre
d'être certain de la taille des vignettes, même si je peux toujours le
contrôler à l'affichage.

Merci

Michel

6 réponses

Avatar
Olivier Miakinen

A partir d'une image (jpeg ou png ou gif), est-il possible de créer une
autre image à sauvegarder sur le site et qui soit une vignette de la
première?

J'ai lu la doc sur php de nexen et je n'ai rien vu de bien concluant. [...]


Et la doc sur www.php.net ?

Par exemple, ceci pourrait répondre à la question :
http://www.php.net/manual/fr/function.imagecopyresampled.php

Si ce n'est pas bon, les autres sont résumées ici :
http://www.php.net/manual/fr/ref.image.php

Avatar
Laforest
Olivier Miakinen wrote:

Et la doc sur www.php.net ?

Par exemple, ceci pourrait répondre à la question :
http://www.php.net/manual/fr/function.imagecopyresampled.php

Si ce n'est pas bon, les autres sont résumées ici :
http://www.php.net/manual/fr/ref.image.php


C'est la même doc que nexen, je ne sais pas si ça correspond bien, faut que
je teste.

En tout cas, merci.

Michel

Avatar
Tanguy
Le 07/11/2004, Laforest a supposé :
Bonjour,

Je suis en train d'automatiser un site, et j'ai une petite question :

A partir d'une image (jpeg ou png ou gif), est-il possible de créer une
autre image à sauvegarder sur le site et qui soit une vignette de la
première?

J'ai lu la doc sur php de nexen et je n'ai rien vu de bien concluant. Ce
problème n'est pas grave en soit, puisque je peux demander que ceux qui
mettent des photos crée eux-même leurs vignettes, mais je cherche au
maximum à leur simplifier le travail; ce qui pourrait en plus me permettre
d'être certain de la taille des vignettes, même si je peux toujours le
contrôler à l'affichage.

Merci

Michel


tu peux t'inspirer du code des albums photos dynamiques....

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

Avatar
- Sebastien -
Laforest - Le 07/11/2004
Bonjour,

Je suis en train d'automatiser un site, et j'ai une petite question :

A partir d'une image (jpeg ou png ou gif), est-il possible de créer une
autre image à sauvegarder sur le site et qui soit une vignette de la
première?



Tu devrais y arriver avec ça...
C'est pour générer une vignette de 100 x hauteur/ratio au format JPG
(quelk que le soit le format de départ), avec contour noir.
Il manque le début mais c'est pas le + compliqué.
Il faut aussi l'éventuel support du PNG.

// création image vide
if ( $jpeg )
$dst_img = imagecreatefromjpeg($dossier.$fichier);
if ( $gif )
$dst_img = imagecreatefromgif($dossier.$fichier);
$largeur_origine = $tabImage[0];
$hauteur_origine = $tabImage[1];
$largeur = 100;
$w = @imageSX($dst_img);
$hauteur = @imageSY($dst_img);
$taux = $w / $largeur;
$hauteur = $hauteur / $taux;
$small_img = imagecreatetruecolor($largeur, $hauteur);
imagecopyresampled($small_img, $dst_img, 0, 0, 0, 0, $largeur,
$hauteur, $largeur_origine, $hauteur_origine);
$bg = imagecolorallocate($small_img, 0,0,0);
imagerectangle($small_img,0,0,$largeur-1,$hauteur-1,$bg);
// envoi image selon format
imagejpeg($small_img, $vignette, 90);

C'est la fonction que j'utilise partout, adaptée de différents scripts.

--
Seb.
Webmaster Le Vivier
Hôtel-Restaurant** à Lomener
http://www.levivier-lomener.com

Avatar
Dominique Ottello
Laforest écrivait :

A partir d'une image (jpeg ou png ou gif), est-il possible de créer une
autre image à sauvegarder sur le site et qui soit une vignette de la
première?


<?php
/* Création d'image miniature (Vignette) à partir d'image existante
Le fichier image doit avoir l'extension .jpg
$image : image originale. Ex : mon_image.jpg
$largeur_max : largeur max de la vignette
$hauteur_max : hauteur max de la vignette
$source : Chemin relatif de l'image originale
par exemple ../ ou ../large/
$destination : Chemin relatif de l'image réduite
par exemple ../ ou ../mini/
$suffixe : Suffixe de la vignette par exemple : _mini
mon_image.jpg deviendra mon_image_mini.jpg
En cas de problème, la miniature créée aura
_erreur comme suffixe */
function creation_vignette($image, $largeur_max, $hauteur_max, $source,
$destination, $suffixe){
global $suffixe;
$OK=TRUE;

if (!file_exists($source.$image)) {$OKúLSE;}

// Extention du fichier doit être jpg
$ext=strtolower(strrchr($image,'.'));
if ($ext!=".jpg") $OKúLSE;

$size = getimagesize($source.$image);
$largeur_src=$size[0];
$hauteur_src=$size[1];
// On vérifie que le type du fichier est un jpg
// $size[2] -> type de l'image : 1 = GIF , 2 = JPG,JPEG
if ($size[2]!=2) $OKúLSE;

$image_src = @imagecreatefromjpeg($source.$image); // Tentative
d'ouverture
if (!image_src) $OKúLSE;

if (!$OK) { // Vérification que tout s'est bien passé, sinon :
$image_src= imagecreate($largeur_max, $hauteur_max); // Création image
blanche
$bgc = imagecolorallocate($image_src , 255, 255, 255);
$tc = imagecolorallocate($image_src , 0, 0, 0);
imagestring($image_src ,1,5,5, "Erreur chargement image", $tc); //
Message dans image
imagestring($image_src ,1,5,30, $source.$image, $tc); // Suite du
message à la ligne
$largeur_src=$largeur_max;
$hauteur_src=$hauteur_max;
$suffixe="_erreur"; // Changement du suffixe pour indiquer l'erreur
}

/* On ne redimensionne que si l'image source est plus grande que les
dimensions choisies pour la miniature */
if ($largeur_src>$largeur_max OR $hauteur_src>$hauteur_max) {
// Ratio calculé sur les largeurs
$ratio=$largeur_max/$largeur_src;
// La nouvelle hauteur calculée dépasse-t-elle la hauteur max ?
if (($hauteur_src*$ratio)>$hauteur_max)
$ratio=$hauteur_max/$hauteur_src;
}
else $ratio=1; // Image miniature identique à l'originale

$image_dest=imagecreatetruecolor(round($largeur_src*$ratio),
round($hauteur_src*$ratio));

imagecopyresized($image_dest,$image_src,0,0,0,0,round($largeur_src*$ratio),
round($hauteur_src*$ratio),$largeur_src,$hauteur_src);

$nomºsename($image,$ext);
if (!imagejpeg($image_dest, $destination.$nom.$suffixe.$ext)){
echo "Pas de création de vignette de image $image";
$OKúLSE;
}
return $OK;
}
?>
--
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
http://aviatechno.free.fr (http://ottello.net)
Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr

Avatar
Alain Brillant
"Laforest" a écrit dans le message de
news:418e8ae4$0$19686$

J'ai lu la doc sur php de nexen et je n'ai rien vu de bien concluant. Ce
problème n'est pas grave en soit, puisque je peux demander que ceux qui
mettent des photos crée eux-même leurs vignettes, mais je cherche au
maximum à leur simplifier le travail; ce qui pourrait en plus me permettre
d'être certain de la taille des vignettes, même si je peux toujours le
contrôler à l'affichage.


Voici comment je procède sur mon site d'album photo.
Après upload de la photo, copie sur le serveur et vérification qu'il s'agit bien
d'une photo JPG

//Création miniature de 130x97 maximum avec même ratio que la photo d'origine
$photo = "photos/$id_membre/$photo_nom";
$src = imagecreatefromjpeg($photo);
$dim = getimagesize($photo);
$ratio = $dim[0] / $dim[1];
if($dim[0] > $dim[1])
{
$pl = 130;
$ph = 130 / $ratio;
}
else
{
$pl = 97 * $ratio;
$ph = 97;
}
$tn_im = imagecreatetruecolor($pl, $ph);
imagecopyresampled($tn_im, $src, 0, 0, 0, 0, $pl, $ph, $dim[0], $dim[1]);
$tn_photo_nom = "TN$photo_nom";
$tn_photo = "photos/$id_membre/$tn_photo_nom";
ImageJpeg($tn_im, $tn_photo, 50);
imagedestroy($src);


--
Alain Brillant
http://zoomclub.free.fr