Redimensionnement d'une images, gif, png, jpeg, jpg

Contenu du snippet

J'éspère que ce code vous sera utile, je n'ai pas encore eu de problème avec ce code, je l'ai améliorer au fur et à mesure du temps. Elle redimenssione les images en gardant les proportions, bien sur ! Vous avez besoin de la fonction "mime_content_type" sur votre serveur pour afficher correctement l'image.

Pour simplifier le nombre de variable faites une seconde fonction pour juste un affichage ou un enregistrement, exemple :

// Voir une image
function show_image( $src, $size ) { // 2 variables, une pour la source et une pour la taile, la taille s'exprime comme ceci (100x100 ou 200x200 etc.)

return do_image( $src, '', $size, 1, 0 );
}

// Enregistré l'image
function save_image( $src, $size, $dest, $del ) { // 4 variables, la source, la taille maximun, la destination de sauvegarde, si on supprime la source (0=non, 1=oui)

return do_image( $src, $dest, $size, 0, $del );
}

// La fonction "do_image"
do_image( string filename src, string filename dest, string maxSize, int show, int del )

Pour le paramêtre "show" 1 signifie l'affiché, 0 signifie l'inverse logique. Pareils pour le paramêtre "del", 1 signie supprimé le fichier une fois convertis, 0 signe ne pas le supprimé après l'affichage ou l'enregistrement

Source / Exemple :


function do_image($src, $dest, $size, $show, $del=1) {
				
		// Extension du fichier
		$ext = strtolower( substr( strrchr( $src, '.' ), 1 ) );
		
		// Si l'extension est reconnue
		if( !in_array( $ext, array( 'jpg', 'jpeg', 'gif', 'png' ) ) ) ) {
			
			return FALSE;
		}
				
		// Propriété du fichier
		list( $width, $height, $type, $attr ) = getimagesize($src);
		
                // Contrôle du type d'image
		if( !in_array( $type, array( 1,2,3 ) ) ) {
			
			if( $del == 1 ) {
			
				unlink( $src );
			}

                  return FALSE;
		} 
		
		// Création d'une images a partir de l'original
		switch( $type ) {

			case 1: $tmp = imagecreatefromgif($src);	break;
			case 2: $tmp = imagecreatefromjpeg($src);	break;
			case 3: $tmp = imagecreatefrompng($src);	break;
						
			default : return FALSE;
		}
		
		// Infos des taillles maximum
		$size = empty( $size ) || strpos( strtolower( $size ), 'x' ) === FALSE ? 100x100 : $size;
		
		list( $max_width, $max_height ) = explode('x', $size);
		
		// Calcul des tailles proportionnelles
		if( $width > $max_width || $height > $max_height ) {
		
			if( $width >= $height ) {
										
				if( $width > $max_width ) {
				
					$width_img	= $max_width;
					$propB 	= $width/$width_img;
					$height_img = floor($height/$propB);
											
				}

				if( $height_img > $max_height ) {
					
					$height_img	= $max_height;
					$propB 	 	= $height/$height_img;
					$width_img 	= floor($width/$propB);
					
				}

			}
			else {
										
				if( $height > $max_height ) {
										
					$height_img	= $max_height;
					$propB 	= $height/$height_img;
					$width_img 	= floor($width/$propB);
											
				}

				if( $width_img > $max_width ) {
					
					$width_img	= $max_width;
					$propB 		= $width/$width_img;
					$height_img = floor($height/$propB);
					
				}
																		
			}
		}
		else {

			$width_img 	= $width;
			$height_img = $height;
		}
		
		// Création de l'image trueColor
		$img = imagecreatetruecolor($width_img, $height_img);
		
		// Copie d'un contenue vers un autre, rééchantillonnage
		if( imagecopyresampled($img, $tmp, 0, 0, 0, 0, $width_img, $height_img, $width, $height) !== false ) {
				
			// Enregistrement ou affichage
			if( $show != 1 ) {
												
				switch( $type ) {
								
					case 1 : imagegif($img, $dest); 		break;
					case 2 : imagejpeg($img, $dest, 100); 	break;
					case 3 : imagepng($img, $dest);		break;
		
					default: return FALSE;
				}
					
			}
			else {
				
				@header("Content-type: ". mime_content_type( $src ) );	
			
				switch( $type ) {
								
					case 1 : imagegif($img); 			exit;	break;
					case 2 : imagejpeg($img, '', 100); 	      exit; break;
					case 3 : imagepng($img); 			exit;	break;
		
					default: return FALSE;
				}
								
			}	
		}
					
			// On supprime $del est égal à 1
			if( $del == 1 ) 			
				unlink($src);
						
			// Suppression des variables
			unset($img, $tmp, $src);
			
	}

Conclusion :


Laissez moi des critiques avec des solutions, si il n'y pas de solutions au problème c'est une critique qui n'est pas utile.

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.

Du même auteur (GNVA Dfx)