Marre des couleurs qui dégorgent

WRInaute discret
Bonjour à tous,

J'ai récupéré et quelque peu modifié le script suivant en vue de resizer mes images lors d'un upload et de pouvoir ressortir des thumbnails.
Tout se passe parfaitement mon image est sauvegardée dans le bon répertoire, mon thumbnail se créer dans le bon répertoire mais lorsque j'ouvre le thumbnail surprises les couleurs ont déteint au lavage ...
Avez vous déjà eu ce type de problématique ? les variables $h et $l (pas très original je vous l'accorde) remontent les hauteurs et largeurs des thumbnails enb pixels y a t'il des tailles tailles standard à respecter ? ais-je oublié une fonction qui prend en charge les couleurs ? dois-je changer de lessive ?

Merci d'avance :)

Code:
<?php
echo $_FILES['image']['size']." r ". $_FILES['image']['name'];
$max = $_FILES['image']['size'];
$image = $_FILES['image']['name'];
$random = mt_rand(1, 1000);// création d'un random pour le thumb
if (preg_match("#(gif|jpg|png)$#i", $image ))
	{
		if (filesize($_FILES['image'][tmp_name]) >100000)
			{
 				echo 'image trop grande, limitée à 100 KB';
			}
		else
			{  
						move_uploaded_file($_FILES['image']['tmp_name'], 'photos/' . basename($random.$_FILES['image']['name']));
                        echo "L'envoi a bien été effectué !";
						$base = basename($_FILES['image']['name']);
 					    $taille=getimagesize("photos/".$random.$base);
						
				if ($taille[0] > $taille[1])// definition du type d'image
					{
					$h= 160;
					$l = 120;
					}
				if ($taille[0] < $taille[1])// definition du type d'image
					{
					$h= 100;
					$l = 150;
					}
				if ($taille[0] == $taille[1])// definition du type d'image
					{
					$l= 160;
					$h = 160;
					}
					if ($taille[2]==1)// ceci est une image GIF
						{
							$image1=imagecreatefromgif("photos/".$random.$base);
							$image2=imagecreate($h,$l);
							imagecopyresized($image2,$image1,0,0,0,0,$h,$l,$taille[0],$taille[1]);
							imagegif($image2,"thumbs/mini-".$random.$base);
						}
					elseif ($taille[2]==2)// ceci est une image JPG
						{
							$image1=imagecreatefromjpeg("photos/".$random.$base);
							$image2=imagecreate($h,$l);
							imagecopyresized($image2,$image1,0,0,0,0,$h,$l,$taille[0],$taille[1]);
							imagejpeg($image2,"thumbs/mini-".$random.$base);
						}
					elseif ($taille[2]==3)// ceci est une image png
						{
							$image1=imagecreatefrompng("photos/".$random.$base);
							$image2=imagecreate($h,$l);
							imagecopyresized($image2,$image1,0,0,0,0,$h,$l,$taille[0],$taille[1]);
							imagepng($image2,"thumbs/mini-".$random.$base);
						}

			}
	}
?>
 
WRInaute accro
Je n'utilise plus GD depuis belle lurette quand je génère des thumbnail. Imagemagick (pour peu que tu sois sous sur dédié) est bien plus efficace et avec un résultat bien plus performant pour ce faire.
 
WRInaute accro
Bonjour

Une question stupide : tes images sont dans quel espace colorimétrique à l'origine ?

Car si tu prends des images en Adobe RVB et que tu les retraites en sRVB sans conversion de profil ICC, c'est typiquement le genre de chose qui arrive...

Ce sont des photos ? Issues d'appareils numériques ?

Cédric (photographe pro à ses heures perdues)
 
WRInaute discret
Bonjour à tous,

J'ai un hébergement mutualisé donc assez limité au niveau de Imagemagick même si c'est une super solution.
concernant l'espace colorimétrique il est difficile de le définir puisque ces thumbnails sont les photos de mes membres (ils créer un compte et chargent une photo. lorsque l'on affiche le profile il y a la description + le thumbnail).
 
WRInaute accro
ben64btz a dit:
ces thumbnails sont les photos de mes membres
sauvegardes-tu les photos initiales avant retaillage ? juste histoire de vérifier que les problèmes des couleurs ne sont pas dues aux originaux de mauvaise qualité ?
 
WRInaute discret
Oui Leonick elles sont sauvegardées dans un fichier à part et tout est ok pour celles-la.
Après plusieurs tests il s'avère que le problème n'apparait que sur les photos en jpeg.
 
WRInaute discret
C'est bon j'ai trouvé merci à tous.
Bon pour ceux qui tomberaient sur ce topic et qui seraient intéressés par la réponse la voici:

Auparavant j'utilisais la fonction imageCreate pour générer une nouvelle image redimensionnée à partir d'une image comme ceci:
Code:
imagecreate(w,h);

Mais la fonction semble mal retraiter les couleurs sur des formats jpeg.
J'ai donc essayé la fonction suivante :

Code:
ImageCreateTrueColor();

et miracle ça fonctionne (ça pixelise un peu mais c'est déjà beaucoup mieux au niveau des couleurs et c'est suffisant dans mon cas).

Merci à tous encore.
 
WRInaute accro
effectivement, je ne me rappelais plus avoir déjà été confronté à ce problème (il y a quelques années) et résolu de la même façon
 
Discussions similaires
Haut