Redimensionner une image

Redimensionner une image - PHP - Programmation

Marsh Posté le 26-07-2007 à 11:12:32    

Salut,

 

 Je sais que ceci à déja été plus ou moins discuté, mais je n'ai pas trouvé de solution satisfaisante sur le forum. Je crée donc ce topic pour pouvoir en trouver une, avec vous  :D

 

J'utilise la fonction suivante pour créer des versions plus petites des images jpeg que je veux afficher:

 
Code :
  1. //fonction Iconize()
  2. //permet de créer une icone à partir de l'image passée en parametre
  3. //par défaut la hauteur est de 50px, le ratio est conservé
  4. //cette fonction va utiliser le repertoire rep pour créer l'icone
  5. //elle renvoie le nom du fichier crée ou false en cas d'erreur
  6. function iconize( $img, $name, $rep='/tmp', $height=40 ) {
  7. //test si le serveur supporte les JPG
  8. if ( !(imagetypes() & IMG_JPG) )
  9.  return false;
  10.    // Lit les dimensions de l'image
  11.    $size = GetImageSize($img)or die ("Pb gdi, GetImageSize" );
  12. //echo(" -$img = "+$img+" $size = "+$size+"<br>" );
  13. //+" $size[0] = "+$size[0]+" $size[1] = +"$size[1]);
  14.    if( !$size )
  15.    return false;
  16. // si l'image n'est pas jpg, on quitte
  17. if( $size[2] != 2 )
  18.  return false;
  19.    $src_w = $size[0];
  20.    $src_h = $size[1];
  21.    //calcul de la largeur au ratio
  22.    $width = ($height * $src_w)/$src_h;
  23. // Crée une image vierge aux bonnes dimensions
  24.    $dst_im = @ImageCreateTrueColor($width,$height) or die ("Pb gdi, imagecreate true color." );
  25.    // Copie dedans l'image initiale redimensionnée
  26.    $src_im = ImageCreateFromJpeg($img);
  27.    ImageCopyResized($dst_im,$src_im,0,0,0,0,$width,$height,$src_w,$src_h);
  28.    // Sauve la nouvelle image
  29.    ImageJpeg($dst_im, $rep.'/icone_'.$name );
  30.    // Détruis les tampons
  31.    ImageDestroy($dst_im); 
  32.    ImageDestroy($src_im);
  33.    return  $rep.'/icone_'.$name;
  34. }
 

Simple n'est-ce pas? Cette fonction est une fonction que j'ai pömpé honteusment il y a qques années quand j'apprenais, et depuis j'ai toujours eu la flemme de la modifier.
Elle marche bien, mais les images redimensionnées ont la facheuse tendance à être... moches. Genre algo nearest neighbour moche.

 

Ex:http://dvphotos.free.fr/images/Voyage%20a%20Prague/icone_IMG_0312.jpg
ou encore:
http://dvphotos.free.fr/images/Voyage%20a%20Prague/icone_IMG_0403.jpg

 

Et moi, j'aimerais des images toutes belles, aliasées, comme quand on redimensionne sous toshop (et pas sous paint).

 

Voila, si vous avez des idées...

 

(note aux chieurs: non j'ai pas commencé à chercher sur google, et même si il y a une osluce évidente ça sert de la poster ici vu qu ele sujet revient de temps en temps à priori).


Message édité par durkheim le 26-07-2007 à 11:13:07
Reply

Marsh Posté le 26-07-2007 à 11:12:32   

Reply

Marsh Posté le 26-07-2007 à 11:22:42    

Wohoo c'est la fête, apparemment il faut utiliser "ImageCopyResampled " au lieu de "ImageCopyResized", mais c'est supporté qu'avec la gd2.0.
Vive l'auto aide!
Je reposte des que je peux tester ça (cad ce soir).

Reply

Marsh Posté le 26-07-2007 à 18:56:27    

Et ça marche trop bien!

 

Comparatif de mes thumbs avant/apres:

 

http://img410.imageshack.us/img410/6804/sanstitreev7.png

 

Voilou, en espérant en aider qques uns.


Message édité par durkheim le 26-07-2007 à 19:01:31
Reply

Sujets relatifs:

Leave a Replay

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