La bibliothèque GD de PHP prend en charge différents types d'images. En particulier, les images de palettes sont traitées différemment des vraies images couleur. Si l'image d'origine est une image de palette et que l'image cible utilise une vraie couleur, ou vice versa, une déviation se produira pendant la conversion des couleurs.
Fix Méthode:
Lors de la création de l'image cible, assurez-vous d'utiliser un type d'image cohérent avec l'image d'origine.
<?php
$src = imagecreatefrompng('http://gitbox.net/images/sample.png');
$width = 100;
$height = 100;
$clip = imagecreatetruecolor($width, $height);
imagecopy($clip, $src, 0, 0, 50, 50, $width, $height);
header('Content-Type: image/png');
imagepng($clip);
imagedestroy($clip);
imagedestroy($src);
?>
Ici, ImageCreateTrueColor est utilisé pour s'assurer que l'image cible est une vraie couleur et éviter la distorsion des couleurs.
Des images telles que la PNG contiennent généralement des canaux transparents (canaux alpha). Si des informations transparentes ne sont pas correctement traitées pendant l'interception, les couleurs apparaîtront incohérentes ou un fond noir apparaîtra.
Fix Méthode:
Allumez le mélange alpha et enregistrez les paramètres de canaux transparents pour l'image cible.
<?php
$src = imagecreatefrompng('http://gitbox.net/images/sample.png');
$width = 100;
$height = 100;
$clip = imagecreatetruecolor($width, $height);
imagesavealpha($clip, true);
imagealphablending($clip, false);
$transparent = imagecolorallocatealpha($clip, 0, 0, 0, 127);
imagefill($clip, 0, 0, $transparent);
imagecopy($clip, $src, 0, 0, 50, 50, $width, $height);
header('Content-Type: image/png');
imagepng($clip);
imagedestroy($clip);
imagedestroy($src);
?>
La profondeur de couleur et l'espace colorimétrique des images de différents formats d'image ou différentes sources peuvent être incohérents, en particulier lors de la conversion entre JPEG et PNG, il est sujet à la différence de couleur.
Fix Méthode:
Essayez de garder le format d'image cohérent lors du traitement des captures d'écran ou utilisez des fonctions dans la bibliothèque GD pour convertir l'espace colorimétrique.
Différentes versions de bibliothèque GD de différents serveurs conduiront également à des résultats de traitement d'image incohérents. La mise à niveau de la bibliothèque GD ou l'assurance de la cohérence environnementale peut réduire les problèmes.