Cleden Posté 10 Février 2004 Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 10 Février 2004 Partager 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(). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Cleden Posté 10 Février 2004 Auteur Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant