Lors du traitement des images en PHP, nous devons parfois juger si les couleurs de différents pixels de l'image sont similaires. En utilisant les deux fonctions de ImageColorResolve () et ImageColorat () , nous pouvons obtenir les informations de couleur d'un pixel dans l'image et comparer davantage si ces couleurs sont similaires. Cet article présentera en détail comment combiner ces deux fonctions pour implémenter cette fonction.
Tout d'abord, assurez-vous d'avoir déjà un fichier image et que le chemin d'accès à ce fichier est correct. PHP fournit une bibliothèque GD pour traiter les fichiers d'image. Vous pouvez utiliser ImageCreateFromJPEG () , ImageCreateFrommpng () ou d'autres fonctions pour charger des images.
Par exemple, supposons que nous ayons un fichier image appelé image.jpg , nous pouvons charger l'image avec le code suivant:
<?php
// Chargement de l'image
$imagePath = "image.jpg";
$image = imagecreatefromjpeg($imagePath);
?>
La fonction ImageColorat () peut obtenir la couleur du pixel à la position spécifiée. Sa syntaxe est la suivante:
int imagecolorat ( resource $image , int $x , int $y )
Cette fonction renvoie une valeur d'index de couleur. La valeur d'index de couleur est un entier qui contient des informations de couleur telles que le rouge, le vert et le bleu (RVB). Nous pouvons le convertir en valeurs RVB via la fonction ImageColorResolve () pour faciliter les comparaisons ultérieures.
La fonction ImageColorResolve () est utilisée pour convertir un index de couleur en une valeur de couleur RVB. La syntaxe est la suivante:
bool imagecolorresolve ( resource $image , int $color_index , int &$red , int &$green , int &$blue )
Il accepte l'index de couleur et renvoie la valeur RVB de ce pixel. Nous pouvons utiliser ces valeurs RVB pour déterminer si les couleurs sont similaires.
Pour déterminer si deux couleurs sont similaires, nous devons calculer la différence entre eux. Cela peut être réalisé en calculant la différence entre leurs valeurs RVB. Par exemple, nous pouvons calculer la somme des différences entre les canaux rouges, verts et bleus, et si les différences sont inférieures à un certain seuil, les deux couleurs sont considérées comme similaires.
Ce qui suit est un exemple complet de code qui montre comment obtenir des couleurs de pixels via ImageColorat () et les convertir en valeurs RVB en utilisant ImageColorResolve () , et déterminez enfin si les couleurs des pixels adjacentes dans l'image sont similaires.
<?php
// Chargement de l'image
$imagePath = "image.jpg";
$image = imagecreatefromjpeg($imagePath);
// Obtenez la couleur d'un pixel
function getColor($image, $x, $y) {
$colorIndex = imagecolorat($image, $x, $y);
imagecolorresolve($image, $colorIndex, $red, $green, $blue);
return ['red' => $red, 'green' => $green, 'blue' => $blue];
}
// Déterminez si les deux couleurs sont similaires
function isColorSimilar($color1, $color2, $threshold = 50) {
$redDiff = abs($color1['red'] - $color2['red']);
$greenDiff = abs($color1['green'] - $color2['green']);
$blueDiff = abs($color1['blue'] - $color2['blue']);
// Si la différence entre les trois canaux de couleur du rouge, du vert et du bleu est inférieur au seuil,Il est considéré comme une couleur similaire
return ($redDiff < $threshold && $greenDiff < $threshold && $blueDiff < $threshold);
}
// Obtenez la couleur de deux pixels
$color1 = getColor($image, 10, 10); // coordonner (10, 10)
$color2 = getColor($image, 11, 10); // coordonner (11, 10)
// Déterminez si les couleurs sont similaires
if (isColorSimilar($color1, $color2)) {
echo "Les couleurs de ces deux pixels sont similaires。\n";
} else {
echo "Les couleurs de ces deux pixels ne sont pas similaires。\n";
}
// Libérez des ressources d'image
imagedestroy($image);
?>
Chargement de l'image : utilisez ImageCreateFromJPEG () pour charger le fichier image.
Obtenez la couleur : obtenez l'index de couleur aux coordonnées spécifiées via ImageColorat () , puis convertissez-la en valeur RVB à l'aide d' ImageColorResolve () .
Déterminez la similitude des couleurs : en calculant la différence RVB entre les deux couleurs, déterminez s'ils sont similaires.
Résultat de sortie : Selon le résultat du jugement, les informations rapides correspondantes sont sorties.
La valeur de seuil de ce code (par défaut 50) est la norme utilisée pour déterminer si les couleurs sont similaires. Vous pouvez ajuster cette valeur en fonction de vos besoins. Plus le seuil est petit, plus les exigences de couleur sont limitées.
Assurez-vous que le chemin d'image utilisé est correct et que le format d'image est pris en charge (comme JPEG, PNG, etc.).
En combinant ImageColorat () et ImageColorResolve () , vous pouvez facilement obtenir les informations de couleur des pixels dans l'image et déterminer si elles sont similaires. Ceci est très utile dans des scénarios tels que le traitement d'image, l'analyse des couleurs, etc. Tant que vous maîtrisez les méthodes d'utilisation de ces deux fonctions, vous pouvez traiter de manière flexible les données de couleur dans l'image.