現在の位置: ホーム> 最新記事一覧> ImageColorClosestとImageCreateTrueColorを一緒に使用する方法は?特定の例分析

ImageColorClosestとImageCreateTrueColorを一緒に使用する方法は?特定の例分析

gitbox 2025-06-22

1。ImageCreatetrueColor ()関数解析

ImageCreatetrueColor()関数は、真の色の画像を作成するために使用されます。幅と高さを含む画像リソースを返します。これは、色の詰め、グラフィックスの描画、画像の出力などのその後の画像操作に使用できます。

関数構文:

 <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>
  • $ width :画像の幅はピクセルで。

  • $ height :画像の高さピクセル。

例:

 <span><span><span class="hljs-comment">// の幅を作成します 200px,高さはです 100px 本当の色の画像</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。ImageColorClosest ()関数解析

ImageColorClosest()関数は、指定されたRGB値に基づいてパレットで最も近い色を見つけます。この関数は、ターゲットカラーに最も近いパレットの色インデックス値を返します。これは、非真実のカラー画像の処理に特に役立ちます。

関数構文:

 <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>
  • $画像:画像リソース。

  • $ red、$ green、$ blue :ターゲット色のRGB値、0から255の範囲。

例:

 <span><span><span class="hljs-comment">// 一番近くになります RGB(255, 0, 0) カラーインデックス(赤)</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. ImageCreatetrueColor()ImageColorClosest()を一緒に使用する方法は?

真の色の画像に長方形を描き、長方形の色が画像パレットで最も近い赤であることを確認する必要があるとします。

ステップ:

  1. imageCreatetrueColor()を使用して、真の色の画像を作成します。

  2. ImageColorClosest()を使用して、ターゲットカラーに最も近いパレットの色インデックスを見つけます。

  3. ImageFilledRectangle()関数を使用して、長方形を画像に描画し、塗りつぶし色を最も近い赤にします。

完全なコードの例:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// aを作成します 400x200 本当の色の画像</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">// 一番近くになります RGB(255, 0, 0) カラーインデックス</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">// 画像に長方形を描きます,填充为赤</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">// 出力画像</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">// 画像リソースを破壊します</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。注意すべきこと

  • ImageColorClosest()はパレット画像で動作します。 ImageCreateTrueColor()で作成した画像が真の色の画像(24ビット色)である場合、 ImageColorClosest()は、パレット画像のように、予想どおりに機能しない場合があります。真の色の画像の場合、 imageColorAllocate()またはImageColorallocatealpha()を使用して直接色を割り当てることをお勧めします。

  • PHPでは、真のカラー画像( ImageCreateTrueColor()によって作成)は24ビット色(つまり、各ピクセルは3バイトで表されます)、パレット画像は色インデックスを使用して色を保存します。

5。概要

ImageCreateTrueColor()ImageColorClosEST()を組み合わせることにより、特に画像をパレット画像に変換する必要がある場合、画像の色の処理に柔軟性を高めることができます。ただし、 ImageColorAllocate()およびImageColorallocatealpha()は、真のカラー画像を扱う際のより適切な選択です。どの方法を使用しても、色モデルの役割と画像の機能を理解することは、画像処理の重要な基盤です。