Vignette en recadrant avec taille fixe!

Description

Marre de voir des scripts qui se contentent de redimensionner l'image pour créer des vignettes?
Frustré d'avoir des vignettes de tailles différente parce que vous ne voulez pas les compresser?

La solution est pourtant simple, recadrer la vignette et laisser tomber les rognures latérales pour que le thumbnail soit toujours de taille fixe!

Or jusqu'à présent personne n'a pris la peine de poster une source pareille ou du moins, pas une source aussi simple.

En somme cette source reste très simple, j'en suis conscient; j'espère juste qu'elle vous sera utile...

Source / Exemple :


<?php
function get_extension($filename)
	{
		$ext = substr(strtolower(strrchr(basename($filename), ".")), 1);
		return $ext;
	}
function imageanytype ($image,$nomImage, $quality=100)
	{
		if (!IMG_JPEG) exit("erreur: librairie GD non activée!");
		
		switch (get_extension($nomImage))
			{
				case "gif":
					return imagegif($image,$nomImage);
					$fctImage = imagegif;
					break;
				case "jpg":
					return imagejpeg($image,$nomImage,$quality);
					break;
				case "png":
					return imagepng($image,$nomImage);
					break;
				case "wbmp":
				case "bmp":
					return imagewbmp($image,$nomImage);
					break;
				case "xbm":
					return imagexbm($image,$nomImage);
					break;
			}
	}
function imagecreatefromanytype ($nomImage)
	{
		if (!IMG_JPEG) exit("erreur: librairie GD non activée!");
		$info = getimagesize($nomImage);
		switch ($info[2])
			{
				case IMG_GIF:
					return imagecreatefromgif($nomImage);
					$fctImage = imagegif;
					break;
				case IMG_JPEG:
					return imagecreatefromjpeg($nomImage);
					break;
				case IMG_PNG:
					return imagecreatefrompng($nomImage);
					break;
				case IMG_WBMP:
					return imagecreatefromwbmp($nomImage);
					break;
				case IMG_XBM:
					return imagecreatefromxbm($nomImage);
					break;
			}
	}
function vignette ($nomImage, $largeur_dest = 100,$hauteur_dest = 75)
	{
		$source=imagecreatefromanytype($nomImage);
		$largeur_src = imagesx($source);
		$hauteur_src = imagesy($source);
		$imageFinale = imagecreatetruecolor ($largeur_dest,$hauteur_dest);
		
		$hauteur_temp=floor($largeur_dest*$hauteur_src/$largeur_src);
		$largeur_temp=floor($largeur_src*$hauteur_dest/$hauteur_src);
		
		if($largeur_temp >= $hauteur_temp AND $largeur_temp >= $largeur_dest) //on prend la hauteur
			{
				
				$semi_diff= floor(($largeur_temp - $largeur_dest )/2);
				imagecopyresampled($imageFinale, $source, -$semi_diff, 0, 0,0, $largeur_temp, $hauteur_dest, $largeur_src, $hauteur_src);				
			}
		else //on prend la largeur
			{
				
				$semi_diff= floor(($hauteur_temp - $hauteur_dest )/2);
				imagecopyresampled($imageFinale, $source, 0, -$semi_diff, 0, 0, $largeur_dest, $hauteur_temp, $largeur_src, $hauteur_src);
			}
		imageanytype($imageFinale,dirname($nomImage)."/_thb_".basename($nomImage),100); 
		return(dirname($nomImage)."/_thb_".basename($nomImage));
	}
?>

Conclusion :


Pour afficher le résultat:
<img src="<?php echo vignette("SourceImage.jpg"); ?>" style="border:solid 1px black;" />
ou

<img src="<?php echo vignette("SourceImage.jpg",70,50); ?>" style="border:solid 1px black;" />

voire

<a href="SourceImage.jpg"><img src="<?php echo vignette("SourceImage.jpg",75,50); ?>" style="border:solid 1px black;" /></a>

P.S.: n'oubliez pas:
1. Il vous faut la librairie GD activée
2. Il vous faut les droits d'écriture sur le dossier
3. enjoy ;-)

Codes Sources

A voir également

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.