begin process at 2010 03 21 15:53:50
  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 :6 869

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 une capture DES HISTOGRAMES , CAMEMBERT 3D ET ÉCLATÉS CRÉÉ AU VOL EN PH... par zozo14
AJOUTER UN ARRIÈRE PLAN SUR UNE IMAGE par digitaldax
REDIMENSIONNER UNE IMAGE EN PHP par digitaldax
Source avec Zip RECHERCHE DE MOTIF DANS UNE IMAGE par ParseError
BARRES PARAMÉTRABLES EN DÉGRADÉ DE COULEUR ET AVEC TEXTE DA... par hornetbzz

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...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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 : 0,374 sec (4)

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