qualité affreuse d'une miniature

qualité affreuse d'une miniature - PHP - Programmation

Marsh Posté le 08-09-2004 à 13:40:17    

petit probleme de creation de miniatures.
 
en fait la miniature est crée dans les bones dimension, mais le probleme c'est que la qualité de l'image ets affreuse
 
pourtant dans imagejpeg j'ai mis 100 comme niveau de qualité (pour tester).
 
voici le code :
 
---------------------------------
 
function CreateEtiquette($NomFichier,$ExtentionFichier){  
 
 
 $Image= $NomFichier;  
 $Source= "../Images/Photos/Originales/";
 $Destination= "../Images/Photos/Miniatures/";  
 $ratio= 143;  
 
 
 
 
   
   if($ExtentionFichier=="gif" )
 {  
    $src=imagecreatefromgif($Source.$Image);  
   }  
   
   else if($ExtentionFichier=="jpeg" || $ExtentionFichier=="jpg" )
 {
 
   $src=imagecreatefromjpeg($Source.$Image);  
   }  
   
 else
 {  
    echo "Format d'image non supporté. Utilisez des *.gif ou *.jpg";  
    exit();  
   }  
   
  $size = getimagesize($Source.$Image);  
   
   if($size[0] > $size[1])
   {  
    $im=imagecreate(round(($ratio/$size[1])*$size[0]), $ratio);  
    imagecopyresized($im, $src, 0, 0, 0, 0, round(($ratio/$size[1])*$size[0]),
  $ratio, $size[0], $size[1]);  
   }  
   
   else
   {  
    $im=imagecreate($ratio, round(($ratio/$size[0])*$size[1]));  
   imagecopyresized($im, $src, 0, 0, 0, 0, $ratio,round($size[1]*($ratio/$size[0])), $size[0], $size[1]);  
   }  
   
  $envoyer=imagejpeg($im, $Destination."mini_".$Image, 100);
   
   if(!$envoyer)
 {  
    print "la création de l'étiquette a echoué pout l'image $Image";  
   }  
   
}

Reply

Marsh Posté le 08-09-2004 à 13:40:17   

Reply

Marsh Posté le 08-09-2004 à 13:57:58    

tu utilise gd ?
 
si c le cas je sais que tu peut utiliser gd2 pour avoir un meilleur rendu.
 
je v regarder mon morceau de code ;)
 
tien voila ma fonction pour redim des images :
 

Code :
  1. function redimage($img_src,$img_dest,$dst_w,$dst_h) {
  2.    // Lit les dimensions de l'image
  3.    $size = GetImageSize($img_src); 
  4.    $src_w = $size[0]; $src_h = $size[1]; 
  5.    // Teste les dimensions tenant dans la zone
  6.    $test_h = round(($dst_w / $src_w) * $src_h);
  7.    $test_w = round(($dst_h / $src_h) * $src_w);
  8.    // Si Height final non précisé (0)
  9.    if(!$dst_h) $dst_h = $test_h;
  10.    // Sinon si Width final non précisé (0)
  11.    elseif(!$dst_w) $dst_w = $test_w;
  12.    // Sinon teste quel redimensionnement tient dans la zone
  13.    elseif($test_h>$dst_h) $dst_w = $test_w;
  14.    else $dst_h = $test_h;
  15.    // Crée une image vierge aux bonnes dimensions
  16.    $dst_im = ImageCreateTrueColor($dst_w,$dst_h);
  17.    // Copie dedans l'image initiale redimensionnée
  18.    $src_im = ImageCreateFromJpeg($img_src);
  19.    ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h);
  20.    // Sauve la nouvelle image
  21.    ImageJpeg($dst_im,$img_dest);
  22.    // Détruis les tampons
  23.    ImageDestroy($dst_im); 
  24.    ImageDestroy($src_im);
  25.    }

Reply

Marsh Posté le 08-09-2004 à 14:30:06    

la solution est bonne neogally, tu fait un "ImageCreateTrueColor" alors que lui fait un "imagecreate", c'est pour ça que sa qualité est pas terrible.


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 08-09-2004 à 14:39:31    

gd2 offre une meilleure qualité de rendu :)

Reply

Marsh Posté le 08-09-2004 à 15:01:30    

Xav_ a écrit :

la solution est bonne neogally, tu fait un "ImageCreateTrueColor" alors que lui fait un "imagecreate", c'est pour ça que sa qualité est pas terrible.


 
+1, c'est en effet la solution.


---------------
Expert en expertises
Reply

Marsh Posté le 09-09-2004 à 00:38:31    

ben pareil !
 
reste que pour moi systématiquement avec les imagecreatetruecolor certains logiciels de visionage d'image m'ajoute une bande de 1-2 pixels noire à droite et en dessous de l'image ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed