Image miniature, limite la taille en hauteur et en largeur, garde les proportions

Contenu du snippet

mini.php?img=image.jpg&size=120

Retourne l'image miniaturisé, en gardant les proportions.

"size" correspond au dimension d'un carré, la miniature ne dépassera pas ce cadre.

Source / Exemple :


<?php
///////////////////////////////////////////////
// avec une largeur de 120, la syntaxe sera  //
// mini.php?img=image.jpg&size=120  //
// ou                                      	 //
// mini.php?img=image.jpeg&size=120 //
///////////////////////////////////////////////
if(isset($_GET['img']))
{
	$img=$_GET['img'];
    if(is_file('./'.$img) && ereg(".jp[e]?g$", $img) && !ereg("[\.]{2}/\\", $img) && !ereg("://", $img))
    {                    // Vérifications: le fichier existe, l'extension est jpg ou jpeg, pas de retour aiu dossier parent, uniquement des liens local.
	    if(isset($_GET['size']) && ereg("^[0-9]{2,}$", $_GET['size']))
	    {                // Validation de la taille, défini et numérique supérieure à 2 chiffres
	    	$cadre=$_GET['size'];
	    }
	    else
    	{
		    $cadre=120;  // sinon, initialise la taille à 120.
	    }

		// Entete de l'image
		header("Content-type: image/jpeg");
		// ouverture de l'image d'origine.
		$img_big = imagecreatefromjpeg($img);
		// récupération de l'image d'origine
	    $size = getimagesize($img);

    	$w1=$w0=$size[0];
	    $h1=$h0=$size[1];
		if($cadre!=0 && $w1>$cadre)
	    {
			$w0=$cadre;
	        $h0=round($h1/($w1/$cadre));
	    }
	    if($cadre!=0 && $h1>$cadre)
	    {
	       	$h0=$cadre;
   		   	$w0=round($w1/($h1/$cadre));
	    }
	    $img_x=$w0;
	    $img_y=$h0;

		// création de la miniature
		$img_mini = @imagecreatetruecolor($img_x, $img_y)
		                or   $img_mini = imagecreate($img_x, $img_y);

		// copie de l'image, avec le redimensionnement.
		imagecopyresized($img_mini,$img_big,0,0,0,0,$img_x,$img_y,$size[0],$size[1]);
		//on envoie l'image reduire au navigateur:
		imagejpeg($img_mini);
	}
}
?>

Conclusion :


J'attend vos commentaires.
Merci d'avance.

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.