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 !

FONCTION MINIATURISATION


Information sur la source

Catégorie :Graphique Classé sous : image, picture, miniature, réduire, thumbshot Niveau : Initié Date de création : 28/07/2005 Date de mise à jour : 26/08/2005 17:49:21 Vu : 5 946

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Description

Cliquez pour voir la capture en taille normale
A partir d'un code trouvé sur ce site j'ai créé une fonction qui permet de faire et d'enregistrer des miniatures automatiquements en png, jpg, jpeg et gif.
Je ne suis pas un pro en php donc je ne pretends pas révolutionner le code que j'ai trouvé, mais je pense lui avoir apporté deux trois options importantes au niveau de la gestion d'erreurs et je lui ai permis de supporter d'autre format.

Chez moi ce code est inclus dans une page qui scanne un dossier et liste toutes les images qu'il contient, je n'ai pas besoin d'avoir des messages d'erreur toutes les deux secondes. Je veux juste savoir s'il a réussi à créer une miniature ou pas.

La capture d'écran montre une image originale et sa miniature. (l'originale étant une capture de mon écran :)
 

Source

  • <?php
  • function redim($nom, $adresse, $taille)
  • {
  • $valeur_retourne=false;
  • $img=$adresse."".$nom;
  • if( function_exists('imagecreatetruecolor') )
  • {
  • $size = getimagesize($img);
  • // ouverture de l'image d'origine avec test pour
  • //eviter les erreurs si db n'est pas active
  • switch ( $size[2] )
  • {
  • case 1 : //'image/gif';
  • $img_big = imagecreatefromgif($img);
  • break;
  • case 2 : //'image/jpeg';
  • $img_big = imagecreatefromjpeg($img);
  • break;
  • case 3 : //'image/png';
  • $img_big = imagecreatefrompng($img);
  • break;
  • default:
  • $img_big=false;
  • break;
  • }
  • if($img_big)
  • {
  • if($taille && ereg("^[0-9]{2,}$", $taille) )
  • { // Validation de la taille, défini et numérique supérieure à 2 chiffres
  • $cadre=$taille;
  • }
  • else
  • {
  • $cadre=150; // sinon, initialise la taille à 120.
  • }
  • $w1=$w0=$size[0];
  • $h1=$h0=$size[1];
  • if($w1>$cadre || $h1>$cadre )
  • {
  • if($cadre!=0 && $w1>$h1)
  • {
  • $w0=$cadre;
  • $h0=round($h1/($w1/$cadre));
  • } else
  • {
  • $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.
  • imagecopyresampled($img_mini,$img_big,0,0,0,0,$img_x,$img_y,$size[0],$size[1]);
  • //on crée un dossier
  • $nom_miniature=$adresse."mini";
  • if (!file_exists($nom_miniature))
  • {
  • mkdir($nom_miniature, 0777);
  • }
  • //on enregistre l'image
  • $nom_miniature.="/mini_";
  • $nom_miniature.=$nom;
  • switch ( $size[2] )
  • {
  • case 1 : //'image/gif';
  • $enregistrement=imagegif($img_mini, $nom_miniature);
  • break;
  • case 2 : //'image/jpeg';
  • $enregistrement=imagejpeg($img_mini, $nom_miniature, 90); ;
  • break;
  • case 3 : //'image/png';
  • $enregistrement=imagepng($img_mini, $nom_miniature);
  • break;
  • default:
  • $enregistrement=false;
  • break;
  • }
  • //on libere la memoire du serveur
  • ImageDestroy($img_mini);
  • if($enregistrement)
  • {
  • $valeur_retourne=true;
  • }
  • } else
  • {
  • $valeur_retourne=false;
  • }
  • //on libere la memoire du serveur
  • ImageDestroy($img_big);
  • } else
  • {
  • $valeur_retourne=false;
  • }
  • }
  • return $valeur_retourne;
  • }
  • ?>
<?php 
function redim($nom, $adresse, $taille)
{ 	
	
    $valeur_retourne=false;
    $img=$adresse."".$nom;  

    if(  function_exists('imagecreatetruecolor')  )
    { 
	 
			$size = getimagesize($img); 	 
	                // ouverture de l'image d'origine avec test pour 
			//eviter les erreurs si db n'est pas active		
			switch ( $size[2] ) 
			{ 
                      
                     case 1 : 	 //'image/gif';
		     $img_big = imagecreatefromgif($img);                    
                     break; 
					 
                     case 2 : 	//'image/jpeg';
                     $img_big = imagecreatefromjpeg($img);                     
                     break; 
					 
                     case 3 : //'image/png';
                     $img_big = imagecreatefrompng($img); 
                     break; 
					 
                     default: 
                     $img_big=false;
					 break; 
                      
           }   
		   if($img_big)
		   { 	   	
						if($taille && ereg("^[0-9]{2,}$", $taille) )
					    { // Validation de la taille, défini et numérique supérieure à 2 chiffres 
					         $cadre=$taille; 
					    } 
					    else 
					    { 
					         $cadre=150; // sinon, initialise la taille à 120. 
					    } 	  	
						
 
				     $w1=$w0=$size[0]; 
				     $h1=$h0=$size[1]; 
				     if($w1>$cadre || $h1>$cadre )
					 {
						 if($cadre!=0 && $w1>$h1)
						 {
						 	$w0=$cadre; 
					        $h0=round($h1/($w1/$cadre)); 
						 } else
						 {
					        $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. 
				        imagecopyresampled($img_mini,$img_big,0,0,0,0,$img_x,$img_y,$size[0],$size[1]); 
						
		
						//on crée un dossier
						$nom_miniature=$adresse."mini";
						if (!file_exists($nom_miniature))
						{
						    mkdir($nom_miniature, 0777);
						}
		
						//on enregistre l'image 
						$nom_miniature.="/mini_";
						$nom_miniature.=$nom;
		
						switch ( $size[2] ) 
						{ 
			                      
			                     case 1 : 	 //'image/gif';
						  		 $enregistrement=imagegif($img_mini, $nom_miniature);                    
			                     break; 
								 
			                     case 2 : 	//'image/jpeg';
			                     $enregistrement=imagejpeg($img_mini, $nom_miniature, 90); ;                     
			                     break; 
								 
			                     case 3 : //'image/png';
			                     $enregistrement=imagepng($img_mini, $nom_miniature); 
			                     break; 
								 
			                     default: 
			                     $enregistrement=false;
								 break; 
			                      
			           } 
				        	
						
						//on libere la memoire du serveur
						ImageDestroy($img_mini); 
 
						
						if($enregistrement)
						{
						    $valeur_retourne=true;
						}
					} else 
					{
					     $valeur_retourne=false;
					}
					
			//on libere la memoire du serveur
			ImageDestroy($img_big);
				
			} else 
			{
			     $valeur_retourne=false;
			}
    }	  		
	return $valeur_retourne;
} 

?>

Conclusion

Merci de relever mes erreurs et de m'en informer.
 

Historique

28 juillet 2005 14:27:16 :
(g juste corrigé des fautes dans les commentaires, je suis pas trés bon en français.)
28 juillet 2005 22:57:44 :
J'ai remplacé imagecopyresized() par imagecopyresampled() (merci stroubinou)
29 juillet 2005 12:50:22 :
J'ai modifié le test du format de fichier, je ne me base plus sur l'extention mais sur le type du fichier. $size = getimagesize($img); switch ( $size[2] ) { case 1 : //'image/gif'; $img_big = @imagecreatefromgif($img); break; case 2 : //'image/jpeg'; $img_big = @imagecreatefromjpeg($img); break; case 3 : //'image/png'; $img_big = @imagecreatefrompng($img); break; default: $img_big=false; break; }
26 août 2005 17:49:21 :
Ajout de function_exists

Commentaires et avis

signaler à un administrateur
Commentaire de BlackDragon0308 le 28/07/2005 16:30:07

Je cherchais une fonction pour reduire les images gifs, voila qui est tout trouvé avec cette fonction, merci à l'auteur

signaler à un administrateur
Commentaire de stroubinou le 28/07/2005 16:43:56

Bonjour!

Plusieurs remarques : au lieu de tester l'extension (gif, jpeg...), teste le type de fichier, ca evitera certains bugs (enfin j'ai pas lu tout le code non plus).

Sinon, à la place de imagecopyresized, j'aurais plutôt utilisé imagecopyresampled (ca te permet en même temps de diminuer la taille de l'image).

Voila...

+++

signaler à un administrateur
Commentaire de Piolo le 28/07/2005 22:55:16

merci pour le imagecopyresampled(); en effet on a une image de meilleur qualité. Pour ton autre conseil, j'admet que je ne vois pas comment récupérer le type du fichier ?!

signaler à un administrateur
Commentaire de stroubinou le 29/07/2005 07:19:44

j'avais fait une fonction de miniaturisation. JE récupérais le type de manière barbare, et on m'a dit comment corriger.
http://www.phpcs.com/code.aspx?ID=31976

LA fonction est GetImageSize (a étudier avec la doc php...)

+++

signaler à un administrateur
Commentaire de massacr le 29/07/2005 09:55:59

Si tu upload l'image, tu peux utiliser ca : $_FILES['nom_champ']['type']
Sinon, tu peux faire comme ca :
list($width, $height, $type, $attr) = getimagesize("ton_image");
echo $type;

Voilà. Bonne source, je m'en servirais.
A+

signaler à un administrateur
Commentaire de Piolo le 29/07/2005 13:58:15

Je prefere ta deuxieme solution, ca permet au code de rester 'portable'.

signaler à un administrateur
Commentaire de Lucyberad le 30/07/2005 23:54:33

y'as une question, qui me titille: est-ce que ton script utilise la librarie GD? auquel cas il faudrait mettre avant tout code html (ou n'importe ou avec ob_start() au debut et ob_end_flush() a la fin):
header ("Content-type: image/png"); //png ou autre c o choix bien sur
voila...
@+
Lucyberad

signaler à un administrateur
Commentaire de massacr le 31/07/2005 09:42:27

Non, car le script PHP n'EST pas l'image, mais la crée dans un dossier. Le script PHP ne devient pas une image.

signaler à un administrateur
Commentaire de Lucyberad le 31/07/2005 18:31:16

ok merci ^^

signaler à un administrateur
Commentaire de tbbuim1 le 01/09/2005 16:21:58

Question:
Que faut-il mettre dans tes variables.
Nom? c'est le nom du fichier que l'on veut réduire???
Adresse? c'est le chemin d'accès de l'image sur le dique????
Taille c'est la taille que l'on veut donner à l'image au finale????

Pourrais-tu écrire un ptit exemple, ça serait sympa.

signaler à un administrateur
Commentaire de bbcluny le 07/09/2005 11:20:48

Bonjour,
serait-il possible d'avoir un exemple ?

signaler à un administrateur
Commentaire de maryvonne le 13/10/2005 16:40:00

Youhouh, bijour,
il y a quelqu'un pour répondre au 2 dernières questions, s'il vous plait ?
merci

signaler à un administrateur
Commentaire de Piolo le 06/11/2005 19:11:02

redim("salut.jpg","../script/images/", 200); redimensionne l'image "salut.jpg" qui se trouve dans le dossier "images" tout en sachant que le script se trouve dans le dossier "script". 200 correspond à la taille maximum de la miniature ( largeur ou hauteur, suivant que l'image est au format paysage ou portrait ).
Pour l'exemple j'en ai un sur une section administrateur mais c sous clé dsl...

signaler à un administrateur
Commentaire de speedylol le 27/04/2006 17:03:33

bonjour et sorry dans le fichier de telechargement d'image que doit ton mettre pour faire fonctionner le fontion de miniaturisation svp???  sorry c'est un très bête questions je sais Merci de votre réponse ou exemple

signaler à un administrateur
Commentaire de p1t0une le 04/06/2006 22:48:46

Bonjour,
je voudrais appliquer ce code à un répertoire entier, je suis novice en php et je voudrais que vous me disiez si je m'oriente dans la bonne direction: ouvrir le dossier, le lire et pour chaque image présente dedans, appliquez cette fonction avec comme parametre de taille une constante. Ca vous parait correct? Merci pour votre aide

signaler à un administrateur
Commentaire de PredaFR le 18/08/2006 12:25:08

faut il avoir la librairie GD car le code me génére l'erreur suivante :

Call to undefined function: imagecreatefromjpeg()

je penche donc pour l'absence de la librairie GD, une suggestion ?

signaler à un administrateur
Commentaire de Milanono le 10/08/2008 09:21:09

Un très grand merci à toi ! Je ne poste pas souvent de commentaires mais ton script m'a été d'une grande aide et je t'en remercie ;)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Liens PHP (appel d'un fichier PHP) [ par vincf1 ] Bonjour à tous tout d'abord Voila, j'explique mon petit soucis (je suis novice en PHP ).Mon but est d'afficher une image miniat Réduire une image on-line [ par arickx ] Salut,Je cherche un moyen de réduire les dimensions ainsi que le poids (pex : de 300ko à 30ko) d'une image au moment de l'upload sur mon site, le tout Où est l'érreur ? (Image Miniature) [ par ImmortalPC ] Salut, apr&#232;s avoir cherch&#233; une solution pour faire une image miniature en automatique j'ai finalement trouv&#233; un script super Voici le s Petit probleme avec une fonction, PHP [ par rouliendelavegas ] Bonjour,J'explique une peu cke fait le scriptj'ouvre un dossier "galerie/"dans ce dossier, j'ouvre un repertoire à la foidans le repertoire ouvert je Réduire la taille d'une image puis la sauvegarder réduite [ par Animax77 ] Je suis en train de faire un site dont le principe est d'uploader des dessins pour les partager. ( je fais un peu de pub en passant ^^, il est ici, ma Création de miniature lors de l'upload d'une image [ par jizz666 ] Hello, Je suis actuellement entrain de cr&#233;er un album photo en PHP/MySQL. Mais j'ai un petit probl&#232;me, je n'arrive pas &#224; cr&#233;er l Miniature image [ par Clad49 ] Salut ! Je me gal&#233;re a trouver un fonction qui permet de cr&#233;&#233; une miniature de fichier !une simple ou l'on indique kel fichier on veut Réduire la taille et par conséquent le poids d'une image avec la lib GD [ par BenXbox ] Salut à tous, Voila je voudrais savoir comment faire pour réduire la taille et par conséquent le poids d'une image avec la lib GD au moment de l'affi Resize et affiche image [ par Anus_hurlant ] bonjour, je voudrai faire une copie miniature d'une grande image et j'aimerai afficher l'image miniature comme lien. Seulement j'ai quelques souci qua Copyright image [ par kimengumi ] BonjourJ'ai bien aimé le script de webdesignasp pour écrire un copyright sur les images.En fait, j'enregistre l'image telle quelle sur mon serveur et


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,499 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é.