Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

IMAGE MINIATURE, LIMITE LA TAILLE EN HAUTEUR ET EN LARGEUR, GARDE LES PROPORTIONS


Information sur la source

Catégorie :Graphique Niveau : Initié Date de création : 25/08/2004 Date de mise à jour : 31/08/2004 23:02:41 Vu : 6 026

Note :
Aucune note

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note


Description

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

  • <?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);
  • }
  • }
  • ?>
<?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.
 

Historique

31 août 2004 23:02:41 :
Modification : $img_mini = @imagecreatetruecolor($img_x, $img_y) or $img_mini = imagecreate($img_x, $img_y);

Commentaires et avis

signaler à un administrateur
Commentaire de retinaeden le 26/08/2004 11:09:58

Ta partie de code qui vérifie pour 'imagecreatetruecolor()' ne marche pas :/
Par contre, pourquoi faire des miniatures en ne leur passant qu'un paramètres de taille ??? Par exemple si on définit size à 100, suivant l'image, ce sera soit la hauteur qui sera égale à 100, soit la largeur.
Et si on veut que toutes les miniatures aient le même format :p ?
Jte dis ça parce que moi j'ai cherché trop longtemps une fonction qui puisse faire des miniatures de hauteur et largeur connues sans pour autant qu'elles soient "aplaties"...
J'en ai jamais trouvé alors, j'en ai fait une ;)

signaler à un administrateur
Commentaire de flashfun le 26/08/2004 12:09:56

"Ta partie de code qui vérifie pour 'imagecreatetruecolor()' ne marche pas :/"
Tu veux dire quoi par là? On m'a déjà dit qu'elle était inutile, je vais surement la retirer.

Pour la taille tu as compris, je n'avais jamais trouvé de programme qui le faisait, et je trouve ca plus jolie quand il y a beaucoup d'images.

Explique toi, tu définit la hauteur et la largeur et l'image n'est pas "aplatie", comment tu fait? tu ajoute des band noire?

signaler à un administrateur
Commentaire de retinaeden le 26/08/2004 14:43:51

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

signaler à un administrateur
Commentaire de DesignerCreators le 31/08/2004 19:01:37

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

signaler à un administrateur
Commentaire de samsso le 22/11/2005 01:47:36

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

signaler à un administrateur
Commentaire de flashfun le 22/11/2005 16:08:22

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

signaler à un administrateur
Commentaire de samsso le 24/11/2005 00:36:04

merci je vais l'essayer j'espère que ça marchera

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,140 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.