8792 sujets

Développement web côté serveur, CMS

Hello,

Dans un script PHP, j'aimerais intégrer une fonction qui redimensionne une image, sans que cela ne bouffe trop de ressources du serveur.
J'ai des photos de plus de 3mb parfois (JPG) que je dois garder en haute résolution pour l'impression, mais j'aimerais un script qui les redimensionne en 600px de large pour l'affichage web?

Une piste ?
J'ai déjà un truc mais qui n'est pas top, ça copie l'image dans un dossier tmp, ça crée une nouvelle de 600px puis y copie le contenu de l'image en full résolution puis l'efface du dossier tmp... Pas ultra pratique ni économique en ressources Smiley lol

Un grand merci!
Modifié par Aybee (25 Oct 2006 - 15:36)
Salut,

tu as regardé du côté de la lib GD ?
Dans tous les cas, un fichier de 3Mo à traiter sur un serveur en ligne prendra du temps et de la ressource.

p.s. super les photos sur ton photoblog Smiley cligne
Modifié par Olivier (14 Sep 2006 - 12:11)
J'utilise ce bout de code pour créer mes miniatures:
ça marche avec la librairie gd qui est souvent présente Smiley smile
ça ne supporte que jpg et png et les miniature sont en png.
ma taille de miniature est fixe 95/95 et je déforme un peut les images...
ça peut se corriger facilement, la taille de l'image d'origine est récupéré dans:
$img_X = $param_img[0];
$img_Y = $param_img[1];
suffit de faire un petit calcul Smiley smile


// fait une miniature a partir d'un fichier jpg/png
function mk_mini_image($file,$to_file) {
		$mini_img ='';
		#retaillage d'image
		# param image
		// attribut image source taille/type (otomatik)
		$param_img = getimagesize($file);
		$img_X = $param_img[0];
		$img_Y = $param_img[1];
		$type = $param_img['mime'];
		
		# param image miniature
		// taille miniature
		$mini_X = 95;
		$mini_Y = 95;
		
		# coordonnés point de départ de la copie
		$mini_X_copy = 0;
		$mini_Y_copy = 0;
		
		# coordonnés point de départ de la partie collé
		$mini_X_paste = 0;
		$mini_Y_paste = 0;
		
		# taille de la partie copier (redimension)
		$mini_X_redim = $mini_X;
		$mini_Y_redim = $mini_Y;
		
		# taille de la partie d'image copier
		$img_X_copy = $img_X;
		$img_Y_copy = $img_Y;
		
		$mk_mini_img = @ImageCreateTrueColor($mini_X,$mini_Y);
		
		# on travail sur l'image selon le type
		if ( $type == 'image/jpeg' ) {
			$mk_img = ImageCreateFromJpeg($file);  
			imagecopyresampled ($mk_mini_img,$mk_img,$mini_X_paste,$mini_Y_paste,$mini_X_copy,$mini_Y_copy,$mini_X_redim,$mini_Y_redim,$img_X_copy,$img_Y_copy);
			return imagepng($mk_mini_img,$to_file);
		}
		elseif ( $type == 'image/png' ) {
			$mk_img = imagecreatefrompng($file); 
			imagecopyresampled ($mk_mini_img,$mk_img,$mini_X_paste,$mini_Y_paste,$mini_X_copy,$mini_Y_copy,$mini_X_redim,$mini_Y_redim,$img_X_copy,$img_Y_copy);
			return imagepng($mk_mini_img,$to_file);
		}
		return true; 
}