Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > Imagick
Imagick Forum d'entraide pour l'extension Imagick permettant de manipuler des images en PHP (port de l'API ImageMagick).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/08/2007, 12h11   #1
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 27
Points : 27
Par défaut [ImageMagick] Redimensionner une image JPEG PNG GIF

Bonjour,

J'ai crée cette fonction afin qu'elle me redimensionne une image uploadé par un utilisateur ! En mème temps le fichier redimentionné doit etre un gif mais l'utilisateur peut uploader des jpg gif ou png .

Pouvez-vous me certifier que ma fonction me retourne bien une image GIF quand l'utilisateur upload un JPG ? Car la fonction retourne toujour une image redimentionnée comme nom.JPG. Si l'image retournée est bien un gif je n'ai plus qu'a renommer nom.jpg en nom.gif.

Voila ma fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
function redim_avatare($im_src,$im_dest)
{
 
    	$size = getimagesize($im_src); // Recuperation de la taille de l'image source		    	
	$src_w = $size[0]; // Largeur de l'image source				
	$src_h = $size[1]; // Hauteur de l'image source
 
	$pourcent = ((160 * 100) / $src_w) / 100; // Calcul du pourcentage de reduction de la largeur et de la hauteur pour 160 px de largeur
 
	$dst_w = floor($src_w*$pourcent); // Largeur de l'image de destination
	$dst_h = floor($src_h*$pourcent); // Hauteur de l'image de destination
	$dst_im = imagecreatetruecolor($dst_w,$dst_h); // Retourne une image noire
 
	$ext = strrchr($this->AvatarUser['name'], '.');
 
	if($ext == '.jpg' || $ext == '.jpeg')
		$src_im = imagecreatefromjpeg($im_src); // Retourne un identifiant d'image représentant une image obtenue à partir de l'image source
	elseif ($ext == '.gif')
		$src_im = imagecreatefromgif($im_src);
	elseif ($ext == '.png')
		$src_im =imagecreatefrompng($im_src);
 
imagecopyresampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h); // Copie, Redimentionne et rééchantillonne l'image source vers l'image destination
 
	$ext = strrchr($dst_im, '.'); // Recherche l'extention du fichier
 
	imagegif($dst_im, $im_dest);
 
	imagedestroy($dst_im); // Libère toute la mémoire associée à l'image image
	imagedestroy($src_im); // libère toute la mémoire associée à l'image image
 
}
Merci beaucoup
Stouille89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2007, 14h38   #2
Membre du Club
 
Inscription : juillet 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 238
Points : 46
Points : 46
Bien a la limite sa m'intéresse vu que je dois faire apepré la même chose donc je vais test pour développer ma propre appli et je te dis
Overstone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2007, 19h47   #3
Membre actif
 
Inscription : janvier 2006
Messages : 149
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : janvier 2006
Messages : 149
Points : 186
Points : 186
Bonjour,

Si tout se passe sans encombres, imagegif() te retournera toujours une image au format gif.

Dans ton code il n'y a pas de trace d'un enregistrement de cette image ... Elle garde donc son nom original / temporaire jusqu'a ce que tu lui en donnes un autre.

Voir du côté de move_uploaded_file() par exemple.
Vell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2007, 21h01   #4
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 27
Points : 27
Ok je voulais juste savoir si l'image retourné par imagegif été bien au format gif !

Pour le nom et le fonction move_uploaded_file() j'ai deja mi en place et tout fonctionne

Encore merci
Stouille89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 00h59   #5
Membre actif
 
Inscription : janvier 2006
Messages : 149
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : janvier 2006
Messages : 149
Points : 186
Points : 186
Re,

Si tu fais pas mal de php en ce moment, ou même à l'avenir, je te conseille de te rendre dès que tu en as besoin sur la doc officielle, elle est excellente, bien fournie, et les messages des utilisateurs peuvent parfois bien aider (même si la plupart sont en anglais).

Tu aurais eu une réponse rapide à ta question sans t'embêter

Bonne continuation !
Vell est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/08/2007, 15h52   #6
Membre du Club
 
Inscription : juillet 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 238
Points : 46
Points : 46
bonjour,

je comprend pas l'utilité de move_uploaded_file().

Il n'est pas plus facile de rajouter l'extension voulu directement dans $im_dest

Code :
imagegif($dst_im, $im_dest);


J'arrive à renommer le fichier ainsi mais je sais pas si il vault mieux utiliser move upload file
Overstone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2007, 21h19   #7
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 27
Points : 27
cette fonction permet de copier une image uploadée c'est a dir qui se trouve dans un dossier temporaire vers un dossier ou elle ne sera pas supprimé par le système... tu peux tres bien utiliser la fonction copy pour faire ce genre d'action !

alors que la fonction imagegif crée une nouvelle image au format gif exclusivement !

voila ma fonction final ! qui recupère une image source le redimensionne la convertie en gif et remplace son extension si besoin est !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
function redim_avatar($im_src, $im_dest)
	{
		global $const; // Variable de type tableau associatif qui contient les paramètres de configuration
		$ResErreur = false;
 
		$size = getimagesize($im_src); // Recuperation de la taille de l'image source		    	
		$src_w = $size[0]; // Largeur de l'image source				
		$src_h = $size[1]; // Hauteur de l'image source
		$ext = strrchr($im_src, '.'); // Extention du fichier
 
		if($src_w > $const['WMaxAvatare'] || $src_h > $const['HMaxAvatare']){
			$coef_w = (($const['WMaxAvatare'] * 100) / $src_w) / 100; // Calcul du coeficient de reduction de la largeur et de la hauteur pour une largeur maximal
			$coef_h = (($const['HMaxAvatare'] * 100) / $src_h) / 100; // Calcul du coeficient de reduction de la largeur et de la hauteur pour une hauteur maximal
 
			if ($coef_w < $coef_h) { // Détermine quel coefficiant doit etre utilisé
				$coef = coef_w;
			}else{
				$coef = $coef_h;
			}
 
			$dst_w = floor($src_w*$coef); // Largeur de l'image de destination
			$dst_h = floor($src_h*$coef); // Hauteur de l'image de destination
		}
 
		$dst_im = imagecreatetruecolor($dst_w,$dst_h); // Retourne une image noire
 
		if($ext == '.jpg' || $ext == '.jpeg')
			$src_im = imagecreatefromjpeg($im_src); // Retourne un identifiant d'image représentant une image obtenue à partir de l'image source JPG
		elseif ($ext == '.gif')
			$src_im = imagecreatefromgif($im_src); // Retourne un identifiant d'image représentant une image obtenue à partir de l'image source GIF
		elseif ($ext == '.png')
			$src_im = imagecreatefrompng($im_src); // Retourne un identifiant d'image représentant une image obtenue à partir de l'image source PNG
 
		imagecopyresampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h); // Copie, Redimentionne et rééchantillonne l'image source vers l'image destination
 
		imagegif($dst_im, $im_dest) // Crée une nouvelle image GIF
 
		if($ext == '.jpg' || $ext == '.jpeg'){
			$new_im_dest = str_replace('.jpg','.gif',$im_dest); // Renomme l'extention en .GIF
			rename($im_dest, $new_im_dest);
		}elseif ($ext == '.png'){
			$new_im_dest = str_replace('.png','.gif',$im_dest); // Renomme l'extention en .GIF
			rename($im_dest, $new_im_dest);
		}elseif ($ext == '.gif'){
			$new_im_dest = $im_dest;
		}
 
 
		imagedestroy($dst_im); // Libère toute la mémoire associée à l'image image
		imagedestroy($src_im); // libère toute la mémoire associée à l'image image
 
		return $new_im_dest; // Retourne le nouvau lien et le nouveau nom du fichier
 
	}
Stouille89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 16h48   #8
Membre du Club
 
Inscription : juillet 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 238
Points : 46
Points : 46
Merci de ton aide

j'ai cependant préférer ne pas utiliser cette technique, par peur de voir la qualitée de mes images tomber à l'eau, sinon de ton coté la qualité est au rendez-vous ou pas ?
Overstone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 21h23   #9
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 27
Points : 27
Derien !

La qualité est parfaite aucune degradation ou pixelisation ! surment grace a imagecopyresampled !
Stouille89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 17h15   #10
Membre du Club
 
Inscription : juillet 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 238
Points : 46
Points : 46
ok bien je vais tester alors merci de ton aide
Overstone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2007, 12h24   #11
Membre du Club
 
Inscription : juillet 2007
Messages : 238
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 238
Points : 46
Points : 46
voila j'ai fait mon script, par contre j'ai légérement modifier le tient car je n'arrivais pas à le faire marcher

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function redim_affiche($im_src,$im_dest)
{
 
    	$size = getimagesize($im_src); // Recuperation de la taille de l'image source		    	
	$src_w = $size[0]; // Largeur de l'image source				
	$src_h = $size[1]; // Hauteur de l'image source
 
	$pourcent = ((19.6 * 100) / $src_w) / 100; // Calcul du pourcentage de reduction de la largeur et de la hauteur pour 160 px de largeur
 
	$dst_w = floor($src_w*$pourcent); // Largeur de l'image de destination
	$dst_h = floor($src_h*$pourcent); // Hauteur de l'image de destination
	$dst_im = imagecreatetruecolor($dst_w,$dst_h); // Retourne une image noire
 
	$ext = strrchr($im_src, '.');
 
	if($ext == '.jpg' || $ext == '.jpeg')
		$src_im = imagecreatefromjpeg($im_src); // Retourne un identifiant d'image représentant une image obtenue à partir de l'image source
	elseif ($ext == '.gif')
		$src_im = imagecreatefromgif($im_src);
	elseif ($ext == '.png')
		$src_im =imagecreatefrompng($im_src);
 
imagecopyresampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h); // Copie, Redimentionne et rééchantillonne l'image source vers l'image destination
 
 
	imagepng($dst_im, $im_dest); // créer une nouvelle image Png 
 
	if($ext == '.jpg' || $ext == '.jpeg'){
			$new_im_dest = str_replace('.jpg','.png',$im_dest); // Renomme l'extention en .GIF
			rename($im_dest, $new_im_dest);
		}elseif ($ext == '.gif'){
			$new_im_dest = str_replace('.gif','.png',$im_dest); // Renomme l'extention en .GIF
			rename($im_dest, $new_im_dest);
		}elseif ($ext == '.png'){
			$new_im_dest = $im_dest;
		}
 
	imagedestroy($dst_im); // Libère toute la mémoire associée à l'image image
	imagedestroy($src_im); // libère toute la mémoire associée à l'image image		
}
si j'ai oublié un truc n'hésite pas, en tout cas sa marche plus que bien
Overstone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2007, 21h10   #12
Nouveau Membre du Club
 
Inscription : novembre 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 142
Points : 27
Points : 27
Oui en effet le dernier script que j'ai envoyé comporté des erreurs dans certain cas ! enfin content que mon script tes aidé !

bon courage pour la suite
Stouille89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h47.


 
 
 
 
Partenaires

Hébergement Web