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
J'utilise la fonction suivante pour créer des versions plus petites des images jpeg que je veux afficher:
Code :
- //fonction Iconize()
- //permet de créer une icone à partir de l'image passée en parametre
- //par défaut la hauteur est de 50px, le ratio est conservé
- //cette fonction va utiliser le repertoire rep pour créer l'icone
- //elle renvoie le nom du fichier crée ou false en cas d'erreur
- function iconize( $img, $name, $rep='/tmp', $height=40 ) {
- //test si le serveur supporte les JPG
- if ( !(imagetypes() & IMG_JPG) )
- return false;
- // Lit les dimensions de l'image
- $size = GetImageSize($img)or die ("Pb gdi, GetImageSize" );
- //echo(" -$img = "+$img+" $size = "+$size+"<br>" );
- //+" $size[0] = "+$size[0]+" $size[1] = +"$size[1]);
- if( !$size )
- return false;
- // si l'image n'est pas jpg, on quitte
- if( $size[2] != 2 )
- return false;
- $src_w = $size[0];
- $src_h = $size[1];
- //calcul de la largeur au ratio
- $width = ($height * $src_w)/$src_h;
- // Crée une image vierge aux bonnes dimensions
- $dst_im = @ImageCreateTrueColor($width,$height) or die ("Pb gdi, imagecreate true color." );
- // Copie dedans l'image initiale redimensionnée
- $src_im = ImageCreateFromJpeg($img);
- ImageCopyResized($dst_im,$src_im,0,0,0,0,$width,$height,$src_w,$src_h);
- // Sauve la nouvelle image
- ImageJpeg($dst_im, $rep.'/icone_'.$name );
- // Détruis les tampons
- ImageDestroy($dst_im);
- ImageDestroy($src_im);
- return $rep.'/icone_'.$name;
- }
|
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:
ou encore:
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