begin process at 2012 02 15 05:49:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > FONCTION MINIATURISATION

FONCTION MINIATURISATION


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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 :7 638

Auteur : Piolo

Ecrire un message privé
Site perso
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

 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

 Sources en rapport avec celle ci

UPLOAD IMAGE AVEC MINIATURE par dilar
Source avec Zip FAIRE DES MINIATURE D'IMAGE, DES PHOTOS POUR LES PROFILS par zulrigh
Source avec Zip CLASSE : GÉNÉRATEUR DE MINIATURE STRICTE OPTIMISÉ par GauldoMagique
Source avec Zip Source avec une capture CLASSE LECTUREENLIGNE - POUR LES SITES DE SCANTRAD OU ... par tiger222
Source avec Zip CRÉATION DE MINIATURE D'UNE IMAGE par waterw72

Commentaires et avis

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

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

+++

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 ?!

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

+++

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+

Commentaire de Piolo le 29/07/2005 13:58:15

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

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

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.

Commentaire de Lucyberad le 31/07/2005 18:31:16

ok merci ^^

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.

Commentaire de bbcluny le 07/09/2005 11:20:48

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

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

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

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

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

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 ?

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

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 : 8,720 sec (3)

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