使用imagecreatefromgif() , imagecreatefrompng()或imagecreate()創建或載入一個基於調色板的圖像資源。
調用imagecolorclosest()
傳入目標顏色的RGB 值,函數會返回圖像中最接近此顏色的調色板索引。
使用返回的顏色索引
你可以用這個索引來繪製、替換顏色,或者讀取顏色信息。
<span><span><span class="hljs-comment">// 載入一張調色板圖像</span></span><span>
</span><span><span class="hljs-variable">$image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromgif</span></span><span>(</span><span><span class="hljs-string">'palette_image.gif'</span></span><span>);
</span><span><span class="hljs-comment">// 設定一個想要匹配的顏色,比如淺藍色</span></span><span>
</span><span><span class="hljs-variable">$targetRed</span></span><span> = </span><span><span class="hljs-number">100</span></span><span>;
</span><span><span class="hljs-variable">$targetGreen</span></span><span> = </span><span><span class="hljs-number">150</span></span><span>;
</span><span><span class="hljs-variable">$targetBlue</span></span><span> = </span><span><span class="hljs-number">200</span></span><span>;
</span><span><span class="hljs-comment">// 獲取最接近的顏色索引</span></span><span>
</span><span><span class="hljs-variable">$closestColorIndex</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-variable">$targetRed</span></span><span>, </span><span><span class="hljs-variable">$targetGreen</span></span><span>, </span><span><span class="hljs-variable">$targetBlue</span></span><span>);
</span><span><span class="hljs-comment">// 通過顏色索引獲取顏色分量</span></span><span>
</span><span><span class="hljs-variable">$colors</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorsforindex</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$closestColorIndex</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"最接近的顏色索引是: "</span></span><span> . </span><span><span class="hljs-variable">$closestColorIndex</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"對應的顏色RGB值是: R=<span class="hljs-subst">{$colors['red']}</span></span></span><span> G=</span><span><span class="hljs-subst">{$colors['green']}</span></span><span> B=</span><span><span class="hljs-subst">{$colors['blue']}</span></span><span>\n";
</span><span><span class="hljs-comment">// 釋放圖像資源</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>
imagecolorclosest只適用於調色板圖像,對於真彩色圖像,顏色匹配的意義不大,因為真彩色圖像沒有固定調色板。
如果圖像的顏色調色板中不存在完全匹配的顏色,函數會返回最接近的顏色索引,保證顏色差異最小。
該函數的效率較高,適合實時顏色查找需求。