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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 182 fois - Téléchargée 32 fois

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

Ajouter un commentaire

Commentaires

Messages postés
19
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
22 octobre 2009

merci je vais l'essayer j'espère que ça marchera
Messages postés
296
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
11 septembre 2004

Il suffit d'utiliser mon autre code : http://www.phpcs.com/codes/MINIATURE-NON-ECRASE-AVEC-CHOIX-DE-LA-POSITION-DU-RECADRAGE/25718.aspx

@+
FlashFun
toujours_zen@hotmail.com
Messages postés
19
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
22 octobre 2009

ton code me parait d'un apport capital.J'ai des images dans ma BD que je voudrais afficher dans un caré de 50/50, cmt m'y prendre?
merci
Messages postés
1
Date d'inscription
vendredi 21 mai 2004
Statut
Membre
Dernière intervention
31 août 2004

La fonction ma lair de marché correctement il me manke plus qu'a la testé. Et pour retinaeden > si le code te retourne l'erreur "unknown function" c parce que il te manque des librairies si tu upload le code sur un serveur style OVH les resultats te seront garanti car imagecreatetruecolor() est une fonction PHP
Messages postés
3
Date d'inscription
mardi 3 février 2004
Statut
Membre
Dernière intervention
26 août 2004

Ce n'est pas que ton test pour imagecreatetruecolor() ne sert à rien, mais je l'ai testé, et j'ai la version 1.6.2 de GD et pourtant c'est passé au travers de ta condition ^^. J'ai donc eu une belle erreur "imagecreatetruecolor() unknown function..."
Mais sinon l'idée est bien je trouve

Pour la taille je n'ajoute pas de bandes noires, je redimensionne l'image à la largeur souhaitée par exemple (tout en gardant les proportions), puis je copie la partie de l'image correspondant à la taille de la miniature. =)

J'explique peut etre pas très bien lol donc si tu veux voir, ma source est en ligne
Afficher les 7 commentaires

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.