Aller au contenu

Upload de photos jpg


Sujets conseillés

Posté

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.

Posté

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().
Posté

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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...