Fonction miniaturisation

Contenu du snippet

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 / Exemple :


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

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.