Position actuelle: Accueil> Derniers articles> Comment utiliser des fonctions ImageColorClosest et ImageCreateTrueColor ensemble? Exemple d'analyse spécifique

Comment utiliser des fonctions ImageColorClosest et ImageCreateTrueColor ensemble? Exemple d'analyse spécifique

gitbox 2025-06-22

1. ImageCreateTrueColor () Analyse de fonction

La fonction ImageCreateTrueColor () est utilisée pour créer une véritable image couleur. Il renvoie une ressource d'image contenant la largeur et la hauteur, qui peuvent être utilisées pour les opérations d'image ultérieures telles que le remplissage des couleurs, le dessin de graphiques ou la sortie d'images.

Syntaxe de fonction:

 <span><span>resource </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$width</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$height</span></span><span>);
</span></span>
  • $ Largeur : La largeur de l'image en pixels.

  • $ hauteur : la hauteur de l'image en pixels.

Exemple:

 <span><span><span class="hljs-comment">// Créer une largeur de 200px,La hauteur est 100px True Image couleur</span></span><span>
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span class="hljs-number">200</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span></span>

2. Analyse de fonction ImageColorClosest ()

La fonction ImageColorClosest () trouve la couleur la plus proche de la palette en fonction de la valeur RVB donnée. Cette fonction renvoie la valeur d'index de couleur dans la palette la plus proche de la couleur cible, ce qui est particulièrement utile pour gérer les images couleurs non truées.

Syntaxe de fonction:

 <span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">imagecolorclosest</span></span><span>(resource </span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$red</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$green</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$blue</span></span><span>);
</span></span>
  • $ Image : Ressource d'image.

  • $ rouge, $ vert, $ bleu : la valeur RVB de la couleur cible, allant de 0 à 255.

Exemple:

 <span><span><span class="hljs-comment">// Se rapprocher RGB(255, 0, 0) Index des couleurs(rouge)</span></span><span>
</span><span><span class="hljs-variable">$colorIndex</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorclosest</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span></span>

3. Comment utiliser ImageCreateTrueColor () et ImageColorClosest () ?

Supposons que nous devons dessiner un rectangle sur une véritable image couleur et assurer que la couleur du rectangle est le rouge le plus proche de la palette d'images.

étape:

  1. Utilisez ImageCreateTrueColor () pour créer une véritable image couleur.

  2. Utilisez ImageColorClosest () pour trouver l'indice de couleur de la palette la plus proche de la couleur cible.

  3. Utilisez la fonction ImageFildRectangle () pour dessiner le rectangle sur l'image, avec la couleur de remplissage au rouge le plus proche.

Exemple de code complet:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Créer un 400x200 True Image couleur</span></span><span>
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span class="hljs-number">400</span></span><span>, </span><span><span class="hljs-number">200</span></span><span>);

</span><span><span class="hljs-comment">// Se rapprocher RGB(255, 0, 0) Index des couleurs</span></span><span>
</span><span><span class="hljs-variable">$redIndex</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorclosest</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">255</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);

</span><span><span class="hljs-comment">// Dessinez un rectangle sur l&#39;image,填充为rouge</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagefilledrectangle</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>, </span><span><span class="hljs-number">350</span></span><span>, </span><span><span class="hljs-number">150</span></span><span>, </span><span><span class="hljs-variable">$redIndex</span></span><span>);

</span><span><span class="hljs-comment">// Image de sortie</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: image/png'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagepng</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);

</span><span><span class="hljs-comment">// Détruiser les ressources d&#39;image</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4. Choses à noter

  • ImageColorClosest () fonctionne avec des images de palette . Si l'image que vous créez avec ImageCreateTrueColor () est une véritable image couleur (couleur 24 bits), ImageColorClosest () peut ne pas fonctionner comme prévu, comme pour l'image de palette. Pour les vrais images couleur, il est recommandé d'utiliser ImageColorAllocate () ou ImageColorAllocatEalpha () directement pour attribuer des couleurs.

  • En PHP, les images couleurs vraies (créées par ImageCreateTrueColor () ) sont des couleurs 24 bits (c'est-à-dire que chaque pixel est représenté par 3 octets), tandis que les images de palettes utilisent des index de couleurs pour stocker les couleurs.

5. Résumé

En combinant ImageCreateTrueColor () et ImageColorClosest () , vous pouvez avoir plus de flexibilité dans la gestion des couleurs de l'image, surtout si vous avez besoin de convertir des images en images de palette. Cependant, ImageColorAllocate () et ImageColorAllocatealpha () sont des choix plus appropriés lorsqu'ils traitent de véritables images couleur. Quelle que soit la méthode utilisée, comprendre le rôle du modèle de couleur et la fonction de l'image est un fondement important pour le traitement d'image.