Cleden Posté 10 Février 2004 Posté 10 Février 2004 Bonjour, J'ai mi en place sur un site un script permettant d'uploader des photos au format jpg et de créer les vignettes correspondantes. Le voici: $size = GetImageSize($img_src); $src_w = $size[0]; $src_h = $size[1]; ///portrait ou paysage if ($src_w > $src_h){$dst_w = 150;} if ($src_w < $src_h){$dst_h = 150;} if ($src_w == $src_h){$dst_h = 150; $dst_w = 150;} $test_h = round(($dst_w / $src_w) * $src_h); $test_w = round(($dst_h / $src_h) * $src_w); if(!$dst_h) {$dst_h = $test_h;} elseif(!$dst_w) {$dst_w = $test_w;} $dst_im = ImageCreate($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_dst); // Détruis les tampons ImageDestroy($dst_im); ImageDestroy($src_im); Tout fonctionne parfaitement, un seul problème persisite: les photos redimensionnées sont parfois, voire souvent blanchies pendant l'opération. Quequ'un connaîtrait-il la raison ? Adresse de la page en contruction: -www.autre-voyage.org/index.php On y voit très bien que les vignettes ont perdu leur contraste. Merci d'avance, Loïc.
Anonymus Posté 10 Février 2004 Posté 10 Février 2004 Je te renvoie les notes de la doc, à propos de la fonction : imagecopyresized. Note : Il y a un problème du aux limitations de la taille de la palette (255 + 1 couleurs différentes). Filtrer ou rééchantillonner une image demande plus de 255 couleurs, une approximation est alors utilisée pour calculer le nouveau nombre de couleurs. Avec une palette, si une nouvelle couleur ne peut être alloueé, la couleur la plus proche (en théorie) est utilisée. Ce n'est pas toujours la couleur la plus proche visuellement. Cela peut générer des problèmes étranges, comme des images blanches. Pour éviter ce problème, passez en image true color, comme celles générée par la fonction imagecreatetruecolor().
Cleden Posté 10 Février 2004 Auteur Posté 10 Février 2004 En fait j'ai trouvé la solution toute faite, il suffit de remplacer: $dst_im = ImageCreate($dst_w,$dst_h);par $dst_im = ImageCreateTrueColor($dst_w,$dst_h); ImageCopyResized($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h); par ImageCopyResampled($dst_im,$src_im,0,0,0,0,$dst_w,$dst_h,$src_w,$src_h); Loïc.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant