La compression d'image est une étape courante du traitement d'image, ce qui peut réduire considérablement la taille des fichiers d'image pour un stockage et un transfert faciles. La préservation de la qualité et des détails de l'image est un défi important pendant le processus de compression. Pour améliorer l'effet de la compression de l'image, l'une des étapes clés est de normaliser la couleur de l'image. PHP fournit des fonctions pour gérer la couleur d'une image, et ImageColorResolve () en fait partie.
La fonction ImageColorResolve () est une fonction de traitement d'image en PHP qui analyse les valeurs RVB pour une couleur spécifique de la palette de couleurs de l'image. De cette façon, nous pouvons normaliser la couleur avant la compression de l'image afin que l'image ne perde pas trop de détails en raison de la différence d'espace colorimétrique pendant la compression. Le prototype de cette fonction est le suivant:
int imagecolorresolve ( resource $image , int $index , int &$red , int &$green , int &$blue )
$ Image : la poignée de ressources d'image entrante, généralement une image créée via la fonction de série ImageCreateFrom * () .
$ index : la valeur d'index de couleur dans la palette d'images.
$ rouge , $ vert , $ bleu : utilisé pour retourner la valeur RVB de la couleur.
Grâce à cette fonction, nous pouvons obtenir la valeur RVB correspondant à la valeur d'index de couleur spécifiée, ce qui est très utile pour le traitement de la normalisation des couleurs des images.
La normalisation des couleurs de l'image consiste à ajuster la couleur de l'image à une gamme de couleurs standard, ce qui réduit les différences de couleur entre différents appareils et formats d'image. Lorsque nous nous préparons à compresser l'image, en s'assurant que les couleurs de l'image se trouvent dans une plage unifiée peuvent améliorer l'efficacité de l'algorithme de compression et réduire la distorsion des couleurs possible pendant la compression.
En utilisant la fonction ImageColorResolve () , nous pouvons obtenir la valeur de couleur de chaque pixel dans l'image avant la compression et la traiter. De cette façon, nous pouvons ajuster la couleur au besoin pour que l'image obtienne de meilleurs résultats lorsqu'il est comprimé.
<?php
// Chargement de l'image
$image = imagecreatefromjpeg('input_image.jpg');
// Obtenez la largeur et la hauteur de l'image
$width = imagesx($image);
$height = imagesy($image);
// Itérer à travers chaque pixel de l'image
for ($y = 0; $y < $height; $y++) {
for ($x = 0; $x < $width; $x++) {
// Obtenez l'indice de couleur du pixel actuel
$colorIndex = imagecolorat($image, $x, $y);
// utiliser imagecolorresolve Obtenir la couleur de RGB valeur
imagecolorresolve($image, $colorIndex, $red, $green, $blue);
// La normalisation des couleurs est effectuée ici
// Par exemple,La couleur peut être ajustée ou améliorée
$normalizedRed = min(255, max(0, $red * 1.2));
$normalizedGreen = min(255, max(0, $green * 1.1));
$normalizedBlue = min(255, max(0, $blue));
// 将归一化后的颜色valeur应用到该像素
$newColor = imagecolorallocate($image, $normalizedRed, $normalizedGreen, $normalizedBlue);
imagesetpixel($image, $x, $y, $newColor);
}
}
// Enregistrer les images traitées
imagejpeg($image, 'output_image.jpg');
// Libérez des ressources d'image
imagedestroy($image);
?>
Tout d'abord, chargez une image JPEG via la fonction ImageCreateFromJPEG () .
Utilisez ImageColorat () pour obtenir l'index de couleur de chaque pixel dans l'image.
Appelez ImageColorResolve () pour obtenir la valeur RVB correspondant à l'indice de couleur.
Normalisez les valeurs RVB, dans cet exemple, nous améliorons les composants rouges et verts de l'image par du simple opération de multiplication.
Utilisez ImageColorAllocate () pour réappliquer la valeur de couleur normalisée à chaque pixel.
Enfin, utilisez ImageJPEG () pour enregistrer l'image traitée en tant que nouveau fichier.
De cette façon, la couleur de l'image est efficacement traitée avant la compression, ce qui aide à améliorer l'effet de compression et à réduire la distorsion des couleurs.
L'utilisation de la fonction ImageColorResolve () pour la normalisation des couleurs est un moyen efficace d'améliorer l'effet de compression d'image. En normalisant la couleur de l'image, la distorsion causée par différents espaces de couleurs et les algorithmes de compression peut être réduite, de sorte que l'image conserve plus de détails pendant le processus de compression. J'espère que cet article vous aidera à mieux comprendre comment appliquer la normalisation des couleurs avant la compression de l'image pour optimiser la qualité de l'image.