Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > GD
GD Forum d'entraide pour l'extension GD permettant de manipuler des images en PHP. Avant de poster -> tutoriels GD
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/11/2007, 12h01   #1
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 52
Détails du profil
Informations personnelles :
Âge : 63

Informations forums :
Inscription : mai 2006
Messages : 52
Points : 30
Points : 30
Par défaut Fiabiliser et améliorer les résultats obtenus avec GD2

Bonjour à tous,
J'utilise GD2 afin de permettre le téléchargement de photos jpg sur un site.
Pour que ces photos soient visibles en vignette j'utilise les instructions de GD2 dont voici le code ci dessous.

Les images sont souvent de très grosse taille, 7 millions de pixels, par exemple.
J'ai deux problèmes :
1/ la qualité de la vignette est vraiment très mauvaise.
2/ Je ne dispose que de 8MO de mémoire sur le serveur pour travailler sur la photo, et parfois ce n'est pas suffisant.

Pouvez-vous me dire si d'autres systèmes existent, ou comment améliorer mes images.

Merci à vous

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
<?
$compnom="basket";
$photo = $_POST['photo'];
$photodir = '../../inclure/';
$phototype = $_FILES['pdf']['type'];
$photodest =$photo."_".$compnom.".jpg";
if ($phototype=="image/pjpeg")
	{
	if (move_uploaded_file($_FILES["pdf"]["tmp_name"],$photodir.$photodest))
		{
		$img_src= $photodir.$photodest;
		$img_dest= $photodir."mini_".$photodest;
		// Lit les dimensions de l'image
    	$size = GetImageSize($img_src);
  		$src_w = $size[0]; $src_h = $size[1];
 		$dst_w=200;
		$dst_h =$dst_w*($src_w/$src_h);
		// Teste les dimensions tenant dans la zone
    	$test_h = round(($dst_w / $src_w) * $src_h);
    	$test_w = round(($dst_h / $src_h) * $src_w);
   		// Si Height final non précisé (0)
    	if(!$dst_h) $dst_h = $test_h;
    	// Sinon si Width final non précisé (0)
    	elseif(!$dst_w) $dst_w = $test_w;
    	// Sinon teste quel redimensionnement tient dans la zone
    	elseif($test_h>$dst_h) $dst_w = $test_w;
    	else $dst_h = $test_h;
    	// Crée une image vierge aux bonnes dimensions
    	$dst_im = ImageCreatetruecolor($dst_w,$dst_h);
    	// Copie dedans l'image initiale redimensionnée
    	$src_im = ImageCreateFromJpeg($img_src);
     	ImageCopyResized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
     	// Sauve la nouvelle image
    	ImageJpeg($dst_im,$img_dest);
		// Détruis les tampons
    	ImageDestroy($dst_im);  
    	ImageDestroy($src_im);
	  	header ("location:../message.php?message=Votre photo est téléchargée");
		break;
		}
    }
else
	{
	Header("location:../message.php?message=Votre photo n'est pas une image JPG");		
    } 	
break;
?>
papilou86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 16h58   #2
Koo
Membre du Club
 
Avatar de Koo
 
Inscription : avril 2004
Messages : 76
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 76
Points : 69
Points : 69
Pour la qualité de l'image imagejpeg dispose d'un 3eme paramètre optionel http://fr.php.net/manual/fr/function.imagejpeg.php

Quand à ta quantité de mémoire je pense pas qu'il existe de solution miracle...
Koo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 19h48   #3
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 52
Détails du profil
Informations personnelles :
Âge : 63

Informations forums :
Inscription : mai 2006
Messages : 52
Points : 30
Points : 30
Par défaut merci

Merci de cette réponse, mais ce n'est pas suffisant, je ne sais pas si d'autre que moi ont les mêmes problèmes, mais j'aimerai bien savoir.
La qualité de l'image est tres tres mauvaise non?
papilou86 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2007, 21h02   #4
Nouveau Membre du Club
 
Inscription : mai 2006
Messages : 52
Détails du profil
Informations personnelles :
Âge : 63

Informations forums :
Inscription : mai 2006
Messages : 52
Points : 30
Points : 30
Par défaut Changer d'intruction

Au cas ou cela serait utile à quelqu'un, j'ai réussi à faire mieux en changeant l'intruction (la ligne)
ImageCopyResized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
par la ligne suivante
imagecopyresampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);

Il semble bien que "imagecopyresampled" soit nettement preférable a "ImageCopyResized".
papilou86 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 07h27.


 
 
 
 
Partenaires

Hébergement Web