5/5 (39 avis)
Vue 11 681 fois - Téléchargée 4 873 fois
<?php /*utilisation de la fonction : $path=chemin d'accès au dossier contenant la photo $fichierSource=nom de la photo $grand=taille du plus grand coté (hauteur pour les portraits, largeur pour les paysages) $destination=dossier de destination de la photo, par rapport à l'emplacement de la fonction */ function thumb($path,$fichierSource,$grand,$destination){ $ombre=$grand / 20; //teste le format de l'image et crée l'image concerné $image_size=getimagesize($path.$fichierSource ); switch ( $image_size[2] ) { case 1 : $source = ImageCreateFromGif($path.$fichierSource); $mime_photo='image/gif'; break; case 2 : $source = ImageCreateFromJPEG($path.$fichierSource); $mime_photo='image/jpeg'; break; case 3 : $source = ImageCreateFromPNG($path.$fichierSource); $mime_photo='image/png'; break; default: echo '<br />Erreur de format image <strong>'.$fichierSource.'</strong>. Seuls les formats jpeg, gif et png sont supportés'; return false; } $largeurSource = imagesx($source); $hauteurSource = imagesy($source); //calcul le rapport entre largeur et longueur... $rapport_dim= $largeurSource / $hauteurSource; //test si image en portrait ou en paysage if ( $largeurSource >= $hauteurSource ) { $largeurDestination = $grand; $hauteurDestination = $largeurDestination / $rapport_dim; } else { $hauteurDestination = $grand; $largeurDestination = $hauteurDestination * $rapport_dim; } //crée l'image ( taille de l'imange source + taille de l'ombre) $im = ImageCreateTrueColor ($largeurDestination + $ombre, $hauteurDestination + $ombre) or die ('<br />Erreur lors de la création image <strong>'.$fichierSource.'</strong>'); //rempli le fond de blanc $blanc=ImageColorAllocate ($im, 255, 255, 255); ImageFill($im, 0, 0, $blanc); ImageColorTransparent ($im, $blanc); //crée l'ombre $col = ImageColorAllocate ($im, 130 ,130 ,130 ); ImageFilledRectangle ($im, $ombre, $ombre, $largeurDestination + $ombre, $hauteurDestination + $ombre, $col); //ajoute par dessus l'image source miniaturisée ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource); $noir=ImageColorAllocate ($im, 0, 0, 0); ImageRectangle($im,0,0, $largeurDestination, $hauteurDestination, $noir); //crée la miniature switch ( $mime_photo) { case 'image/jpeg' : ImageJpeg ($im, $destination.'/'.$fichierSource); break; case 'image/gif' : ImageGif ($im, $destination.'/'.$fichierSource); break; case 'image/png' : ImagePng ($im, $destination.'/'.$fichierSource); break; } return true; } $file='img.jpeg'; if(!is_file('./thumb/'.$file)) { thumb('./',$file,100,'./thumb/') or die ('<br />La miniaturisation de <strong>'.$file.'</strong> a échoué...'); echo '<img src="./thumb/',$file,'" />'; } ?>
16 avril 2006 à 03:45
$path = './images/';
$fichierSource = '028.jpg';
$image = $path.$fichierSource;
(...)
$image_size=getimagesize($image);
switch ( $image_size[2] ) {
case 1 :
$source = ImageCreateFromGif($image);
$mime_photo='image/gif';
break;
(...)
ca ne fonctionne pas mais si je fais :
$image_size=getimagesize('./images/028.jpg');
switch ( $image_size[2] ) {
case 1 :
$source = ImageCreateFromGif('./images/028.jpg');
$mime_photo='image/gif';
break;
là ca fonctionne !!!
peut-on m'expliquer où est le bug !
il ne reconnais pas le type-mime du fichier quand je mets le nom des variables pourtant la valeur est correct puisque
echo $image; m'affiche './images/028.jpg'
idem pour $grand je suis obligé de le remplacer par sa valeur sinon ca ne fonctionne pas.
par contre j'ai changé
$file='img.jpeg';
par
$file=$fichierSource;
c'est mieux d'avoir la miniature qui a le meme nom que l'original !
pour que la miniaturisation fonctionne correctement
j'ai egalement modifié
if ( $largeurSource >= $hauteurSource ) {
$largeurDestination = $grand;
$hauteurDestination = $largeurDestination / $rapport_dim;
}
else {
$hauteurDestination = $grand;
$largeurDestination = $hauteurDestination * $rapport_dim;
}
par
if ( $largeurSource >= $hauteurSource ) {
$largeurDestination = $grand;
$hauteurDestination = $grand / $rapport_dim;
}
else {
$hauteurDestination = $grand;
$largeurDestination = $grand * $rapport_dim;
}
voila si qqn trouve la reponse a mon probleme pour $path.$fichierSource
ca serait cool merki
4 avril 2006 à 23:44
je crois que la fonction createimagefrom n'est pas au point, car j'ai fais un script qui miniaturise tout les jpeg dans un dossier et en testant la miniaturisation en local, la copie est de bonne qualité, mais sur un serveur, tel que free, il devient illisible.
12 janv. 2006 à 01:21
11 janv. 2006 à 17:59
Ton dossier /photo/ existe pas, car il essaye de le detecter a la racine.
Essaye de mettre ./photo/, qui va chercher dans le dossier courant:)
11 janv. 2006 à 06:35
Warning: getimagesize(): open_basedir restriction in effect. File(/photo/general.jpg) is not within the allowed path(s): (/home/euhreux/:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/euhreux/public_html/upload/upload.php on line 32
Warning: getimagesize(/photo/general.jpg): failed to open stream: Operation not permitted in /home/euhreux/public_html/upload/upload.php on line 32
Erreur de format image general.jpg. Seuls les formats jpeg, gif et png sont supportés
Warning: getimagesize(./img.jpeg): failed to open stream: No such file or directory in /home/euhreux/public_html/upload/upload.php on line 32
Erreur de format image img.jpeg. Seuls les formats jpeg, gif et png sont supportés
La miniaturisation de img.jpeg a échoué...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.