PHPでは、特にウェブサイト開発、動的な画像生成、または画像編集において、画像処理は常に非常に重要な機能の1つです。 PHPはさまざまな画像処理機能を提供し、 ImageWBMPとImageCopyは、画像の作成または編集によく使用される非常に実用的な機能の2つです。
ImageWBMPは、画像をWBMP形式に出力するためのPHP GDライブラリの関数です。 WBMP(ワイヤレスビットマップ)は、モバイルデバイスまたは昔ながらのブラウザで通常使用される低品質で低色の深度画像形式です。 ImageWBMP関数の関数は、GDイメージリソースをWBMP形式と出力に変換することです。
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">imagewbmp</span></span><span>(resource </span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$threshold</span></span><span> = </span><span><span class="hljs-number">128</span></span><span>);
</span></span>$画像:出力される画像リソース。
$ filename :画像を保存するパス。提供されていない場合、画像はブラウザに直接出力されます。
$しきい値:オプションのパラメーターは、しきい値を設定して、ピクセルが黒であるかどうかを判断します。デフォルト値は128で、値が小さくなるほど、画像が暗くなります。
<span><span><span class="hljs-meta"><?php</span></span><span>
</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__">imagecreatetruecolor</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-comment">// 背景色を設定します</span></span><span>
</span><span><span class="hljs-variable">$bgColor</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">255</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagefill</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-variable">$bgColor</span></span><span>);
</span><span><span class="hljs-comment">// フォアグラウンドの色を設定します</span></span><span>
</span><span><span class="hljs-variable">$black</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">0</span></span><span>);
</span><span><span class="hljs-comment">// 単純な長方形を描きます</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagerectangle</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">90</span></span><span>, </span><span><span class="hljs-number">90</span></span><span>, </span><span><span class="hljs-variable">$black</span></span><span>);
</span><span><span class="hljs-comment">// 出力はです WBMP 形式</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagewbmp</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">?></span></span><span>
</span></span>ImageCopy関数は、ある画像の部分を別の画像にコピーするために使用されます。これは、画像上のコンテンツをオーバーレイしたり、ある画像から領域を抽出したり、別の画像に抽出したりするのに非常に役立ちます。
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">imagecopy</span></span><span>(resource </span><span><span class="hljs-variable">$destination</span></span><span>, resource </span><span><span class="hljs-variable">$source</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$dst_x</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$dst_y</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$src_x</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$src_y</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$src_w</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$src_h</span></span><span>);
</span></span>$宛先:ターゲット画像リソース。
$ソース:ソースイメージリソース。
$ dst_x 、 $ dst_y :ターゲット画像の開始位置。
$ src_x 、 $ src_y :ソース画像の開始位置。
$ src_w 、 $ src_h :ソース画像の幅と高さ。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ソース画像を作成します</span></span><span>
</span><span><span class="hljs-variable">$source</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</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">$white</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$source</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">255</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagefill</span></span><span>(</span><span><span class="hljs-variable">$source</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-variable">$white</span></span><span>);
</span><span><span class="hljs-comment">// ソース画像に何かを描きます</span></span><span>
</span><span><span class="hljs-variable">$black</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$source</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">0</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imageline</span></span><span>(</span><span><span class="hljs-variable">$source</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">90</span></span><span>, </span><span><span class="hljs-number">90</span></span><span>, </span><span><span class="hljs-variable">$black</span></span><span>);
</span><span><span class="hljs-comment">// ターゲット画像を作成します</span></span><span>
</span><span><span class="hljs-variable">$destination</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">$bgColor</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecolorallocate</span></span><span>(</span><span><span class="hljs-variable">$destination</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">255</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagefill</span></span><span>(</span><span><span class="hljs-variable">$destination</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-variable">$bgColor</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagecopy</span></span><span>(</span><span><span class="hljs-variable">$destination</span></span><span>, </span><span><span class="hljs-variable">$source</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">0</span></span><span>, </span><span><span class="hljs-number">0</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-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">$destination</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">$source</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$destination</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>この場合、 ImageWBMPとImageCopy関数を組み合わせて複雑な画像効果を作成する方法を示します。画像の一部を別の画像に重ねてWBMP形式に出力します。背景画像があり、アイコンまたはその他の画像の一部をその背景画像にオーバーレイし、モバイルデバイスに適合するために低品質のWBMP形式で出力するとします。
背景画像と画像を重ねてロードします。
ImageCopyを使用して、画像の一部をコピーして、背景画像に重ね合わせます。
ImageWBMPを使用して、最終画像を出力します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 背景画像の読み込み</span></span><span>
</span><span><span class="hljs-variable">$background</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefromjpeg</span></span><span>(</span><span><span class="hljs-string">'background.jpg'</span></span><span>);
</span><span><span class="hljs-comment">// 複合するために画像をロードします</span></span><span>
</span><span><span class="hljs-variable">$overlay</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-string">'overlay.png'</span></span><span>);
</span><span><span class="hljs-comment">// 画像の幅と高さを重ねる</span></span><span>
</span><span><span class="hljs-variable">$overlay_width</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesx</span></span><span>(</span><span><span class="hljs-variable">$overlay</span></span><span>);
</span><span><span class="hljs-variable">$overlay_height</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesy</span></span><span>(</span><span><span class="hljs-variable">$overlay</span></span><span>);
</span><span><span class="hljs-comment">// 重ね合わせる画像の一部を選択します</span></span><span>
</span><span><span class="hljs-variable">$src_x</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
</span><span><span class="hljs-variable">$src_y</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
</span><span><span class="hljs-variable">$src_w</span></span><span> = </span><span><span class="hljs-variable">$overlay_width</span></span><span>;
</span><span><span class="hljs-variable">$src_h</span></span><span> = </span><span><span class="hljs-variable">$overlay_height</span></span><span>;
</span><span><span class="hljs-comment">// 背景画像のオーバーレイ位置を選択します</span></span><span>
</span><span><span class="hljs-variable">$dst_x</span></span><span> = </span><span><span class="hljs-number">50</span></span><span>;
</span><span><span class="hljs-variable">$dst_y</span></span><span> = </span><span><span class="hljs-number">50</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">imagecopy</span></span><span>(</span><span><span class="hljs-variable">$background</span></span><span>, </span><span><span class="hljs-variable">$overlay</span></span><span>, </span><span><span class="hljs-variable">$dst_x</span></span><span>, </span><span><span class="hljs-variable">$dst_y</span></span><span>, </span><span><span class="hljs-variable">$src_x</span></span><span>, </span><span><span class="hljs-variable">$src_y</span></span><span>, </span><span><span class="hljs-variable">$src_w</span></span><span>, </span><span><span class="hljs-variable">$src_h</span></span><span>);
</span><span><span class="hljs-comment">// 出力はですWBMP形式</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagewbmp</span></span><span>(</span><span><span class="hljs-variable">$background</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">$background</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$overlay</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>ImageCreatefromJpegおよびImageCreateFrommpng関数は、それぞれJPEGの背景画像とPNG形式のオーバーレイ画像をロードするために使用されます。
ImageCopy関数を使用して、オーバーレイ画像の一部をコピーし( (0、0) 、幅と高さがオーバーレイ画像のサイズ)、背景画像の(50、50)位置にコピーします。
最後に、 ImageWBMPを使用して、低帯域幅またはモバイルデバイスに適したProcessed ImageをWBMP形式に出力します。
ImageWBMPとImageCopy関数を組み合わせることにより、複雑な画像オーバーレイを実現し、最終画像をモバイルデバイスまたは低帯域幅環境に適したWBMP形式に変換できます。このアプローチは、特に昔ながらのモバイルデバイスまたは特定の画像形式のサポートを必要とするアプリケーションを開発する場合、動的に画像を生成したり、ユーザーにパーソナライズされたコンテンツを提供したりする場合に役立ちます。
このケースが、PHPで複雑な画像効果を実現するためにこれら2つの機能を使用する方法をよりよく理解するのに役立つことを願っています。