PHPでは、 ImageFilledRectangle関数は、画像に長方形を埋めるための非常に一般的な画像処理関数です。その基本機能は、指定された座標と色によって画像に長方形を描画し、色を埋めることです。関数自体は非常に単純ですが、実際のアプリケーションでは、長方形の色を選択して設定する方法は、画像効果に影響を与える重要な要因の1つです。
この記事では、描かれた長方形が美しく、ニーズに合ったものになるように、 ImageFilledRectangle関数を使用するときに色を合理的に選択して設定する方法について説明します。
ImageFilledRectangle関数の構文は次のとおりです。
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">imagefilledrectangle</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">$x1</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$y1</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$x2</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$y2</span></span><span> , </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$color</span></span><span> )
</span></span>
$画像:ターゲット画像リソース。
$ x1 、 $ y1 :長方形の左上隅座標。
$ x2 、 $ y2 :長方形の右下隅の座標。
$色:長方形の充填色。
この関数は、指定された2つのコーナー( $ x1 、 $ y1 )と( $ x2 、 $ y2 )で定義された長方形を描画し、指定された色で長方形を埋めます。色は画像のパレットを通じて指定されているため、通常は最初に色を定義し、関数に渡すことに注意する必要があります。
ImageFilledRectangle関数を使用する場合、通常、色を設定する2つの方法があります。
ImageColorAllocate関数は、画像に色を割り当てるために使用されます。構文は次のとおりです。
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</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-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">200</span></span><span>);
</span><span><span class="hljs-variable">$red</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</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-title function_ invoke__">imagefilledrectangle</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">190</span></span><span>, </span><span><span class="hljs-number">190</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>);
</span></span>
ここでは、 ImageColorAllocateを介して赤い色を割り当ててから、それをイメージフィルデリクトアングル関数の引数として渡し、長方形を埋めます。
ImageColorallocatealpha関数は、 ImageColorAllocateに似ていますが、透明度設定をサポートします。構文は次のとおりです。
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">imagecolorallocatealpha</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><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$alpha</span></span><span> )
</span></span>
$ alpha :透明度値は0〜127、0は完全に不透明であり、127は完全に透過的であることを意味します。
半透明の塗りつぶし色を長方形に設定する場合は、これを行うことができます。
<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">200</span></span><span>);
</span><span><span class="hljs-variable">$transparent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocatealpha</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-number">60</span></span><span>); </span><span><span class="hljs-comment">// 60 半透明です</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">10</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">190</span></span><span>, </span><span><span class="hljs-number">190</span></span><span>, </span><span><span class="hljs-variable">$transparent</span></span><span>);
</span></span>
透明性は、Webページに透明な背景を持つレイヤーを描くなど、バックグラウンドの透明性を必要とするいくつかの効果に非常に役立ちます。
実際のプロジェクトでは、長方形の充填色を選択するときは、長方形と背景のコントラストを考慮する必要があります。長方形の色が背景色と鋭く対照される場合、長方形の色がより顕著になる可能性があります。背景色が暗い場合は、明るい長方形の塗りつぶしを選択できます。背景が明るい場合は、暗い塗りつぶしを選択できます。視覚効果を改善するには、適切なコントラストを使用することが重要です。
一部のユーザーは、色覚異常や色の弱い問題を抱えている場合があります。したがって、色を設計するときは、色の盲目に優しい色の組み合わせを選択できます。赤や緑などの混乱のある色の組み合わせを避け、青やオレンジなどのより簡単に区別できるトーンを選択します。
一部のシーンでは、色は単なる装飾ではなく、特定の意味もあります。たとえば、赤は警告またはエラーを表す場合があり、緑は成功または合格を表す場合があります。長方形の充填色を選択するとき、色の心理的効果と象徴的な意味を考慮すると、ユーザーの体験と理解が向上する可能性があります。
異なる色の複数の長方形を描く必要があると仮定し、これらの長方形の色が異なる状態に従って設定されています。これがサンプルコードです:
<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">400</span></span><span>);
</span><span><span class="hljs-comment">// 色を定義します</span></span><span>
</span><span><span class="hljs-variable">$red</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</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-variable">$green</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">0</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-comment">// 緑</span></span><span>
</span><span><span class="hljs-variable">$blue</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$image</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-number">255</span></span><span>); </span><span><span class="hljs-comment">// 青</span></span><span>
</span><span><span class="hljs-variable">$yellow</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</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">255</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-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">10</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>, </span><span><span class="hljs-variable">$red</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">120</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-number">210</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>, </span><span><span class="hljs-variable">$green</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">10</span></span><span>, </span><span><span class="hljs-number">120</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>, </span><span><span class="hljs-number">210</span></span><span>, </span><span><span class="hljs-variable">$blue</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">120</span></span><span>, </span><span><span class="hljs-number">120</span></span><span>, </span><span><span class="hljs-number">210</span></span><span>, </span><span><span class="hljs-number">210</span></span><span>, </span><span><span class="hljs-variable">$yellow</span></span><span>); </span><span><span class="hljs-comment">// 黄色の長方形</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>
この例では、4つの色を定義し、 ImageFilledRectangle関数を使用して、異なる色の4つの長方形を描画します。これにより、ユーザーは各長方形の充填効果をはっきりと見ることができます。
PHPでImageFilledRectangle関数を使用する場合、色を合理的に選択して設定することが重要です。 ImageColorAllocateまたはImageColorallocatealpha関数を使用することにより、長方形に適切な塗りつぶし色を設定できます。色を選択するときは、背景のコントラスト、色覚異常、色の心理的効果を考えてください。適切な色の組み合わせのみが、描かれた長方形をより人目を引く、理解しやすくすることができ、画像の視覚効果とユーザーエクスペリエンスを向上させることができます。