begin process at 2012 02 11 16:39:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

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

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


 Information sur la source

Note :
Aucune note
Catégorie :Graphique Niveau :Initié Date de création :25/08/2004 Date de mise à jour :31/08/2004 23:02:41 Vu :7 640

Auteur : flashfun

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
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);

 Sources du même auteur

MINIATURE NON ÉCRASÉ, AVEC CHOIX DE LA POSITION DU RECADRAGE
SUPPRIME LES RÉPÉTITIONS DE CARACTÈRE OU SUITE DE CARACTÈRE.

 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
Source avec Zip NAVIGATOR (+CSSDETECTOR) par xXVoxPopuliXx
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow

Commentaires et avis

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 ;)

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?

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

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

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

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

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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,466 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales