現在の位置: ホーム> 最新記事一覧> ImageFilltoborderとImageCopymergeの混合使用の実用的なケース分析

ImageFilltoborderとImageCopymergeの混合使用の実用的なケース分析

gitbox 2025-09-18
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// フロント PHP コードの例(記事の内容とは何の関係もありません)</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"这はい1つ段与文章无关的フロントコードの例"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-comment"># imagefilltoborder そして imagecopymerge 混合使用の実用的なケース分析</span></span><span>

存在する PHP 画像処理機能はです,`imagefilltoborder` そして `imagecopymerge` これらは2つの非常に実用的な機能です。彼らはそれぞれ明確な機能を持っています,しかし、両方が1つ緒に使用される場合,可以实现1つ些更加灵活そして高级的图像处理效果。この記事では、実用的なケースを使用します,これら2つの機能の混合使用方法の詳細な分析。

</span><span><span class="hljs-comment">## 1つ、関数の紹介</span></span><span>

</span><span><span class="hljs-number">1</span></span><span>. **imagefilltoborder**
   - 関数:指定されたポイントからの色の塗りつぶしから始めます,指定された境界色に遭遇するまで。
   - 一般的なシナリオ:エリアの充填を実装します、複雑な形などの背景充填。。

   ```php
   </span><span><span class="hljs-title function_ invoke__">imagefilltoborder</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$x</span></span><span>, </span><span><span class="hljs-variable">$y</span></span><span>, </span><span><span class="hljs-variable">$border_color</span></span><span>, </span><span><span class="hljs-variable">$fill_color</span></span><span>);
</span></span>

パラメーター説明:

  • $画像:ターゲット画像リソース。

  • $ x$ y :ポイント座標を充填します。

  • $ border_color :境界色、この色に遭遇したときに充填を停止します。

  • $ fill_color :塗りつぶし色。

  1. ImageCopymerge

    • 機能:1つの画像を別の画像にマージし、透明性を制御します。

    • 一般的に使用されるシーン:透かしの作成、写真のオーバーレイなど。

     <span><span><span class="hljs-title function_ invoke__">imagecopymerge</span></span><span>(</span><span><span class="hljs-variable">$dst_image</span></span><span>, </span><span><span class="hljs-variable">$src_image</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-variable">$pct</span></span><span>);
    </span></span>

    パラメーター説明:

    • $ DST_IMAGE :ターゲット画像リソース。

    • $ src_image :ソース画像リソース。

    • $ dst_x$ dst_y :ターゲット画像の開始座標。

    • $ src_x$ src_y :ソース画像の開始座標。

    • $ src_w$ src_h :ソース画像の幅と高さ。

    • $ PCT :マージされた透明性の割合。

2。実用的なケース:グラデーションボーダーマップを作成します

勾配に満ちた境界線を写真に追加し、境界線の半透明のロゴをオーバーレイすると仮定します。最初にImageFilltoBorderを使用して境界を埋め、次にImageCopyMergeを使用してロゴを追加できます。

ステップ1:キャンバスと境界線を作成します

<span><span><span class="hljs-variable">$width</span></span><span> = </span><span><span class="hljs-number">400</span></span><span>;
</span><span><span class="hljs-variable">$height</span></span><span> = </span><span><span class="hljs-number">300</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-variable">$width</span></span><span>, </span><span><span class="hljs-variable">$height</span></span><span>);

</span><span><span class="hljs-comment">// 色を定義します</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">$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-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-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-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">$white</span></span><span>);

</span><span><span class="hljs-comment">// 使用 imagefilltoborder 赤い境界線を作成します</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagefilltoborder</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-variable">$white</span></span><span>, </span><span><span class="hljs-variable">$red</span></span><span>);
</span></span>

ステップ2:ロゴをロードしてマージします

<span><span><span class="hljs-variable">$logo</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-string">'logo.png'</span></span><span>); </span><span><span class="hljs-comment">// 仮定 logo はい PNG 形式</span></span><span>
</span><span><span class="hljs-variable">$logo_width</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesx</span></span><span>(</span><span><span class="hljs-variable">$logo</span></span><span>);
</span><span><span class="hljs-variable">$logo_height</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesy</span></span><span>(</span><span><span class="hljs-variable">$logo</span></span><span>);

</span><span><span class="hljs-comment">// 意思 logo 右下隅にマージされました,透明性 50%</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagecopymerge</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-variable">$logo</span></span><span>, </span><span><span class="hljs-variable">$width</span></span><span> - </span><span><span class="hljs-variable">$logo_width</span></span><span> - </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-variable">$height</span></span><span> - </span><span><span class="hljs-variable">$logo_height</span></span><span> - </span><span><span class="hljs-number">10</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">$logo_width</span></span><span>, </span><span><span class="hljs-variable">$logo_height</span></span><span>, </span><span><span class="hljs-number">50</span></span><span>);
</span></span>

ステップ3:画像を出力し、リソースをリリースします

<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-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$image</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$logo</span></span><span>);
</span></span>

iii。実用的な分析

  1. 混合使用の利点

    • ImageFilltoBordoryは、閉じた領域の背景色をすばやく満たし、手動で描画する境界線の複雑さを減らします。

    • ImageCopymergeは、充填領域に半透明の要素を重ねて、複雑な層効果を実現できます。

    • 2つの組み合わせにより、背景と装飾層の柔軟な処理が可能になり、視覚的な美化が実現されます。

  2. 注意すべきこと

    • 境界線の色は正しい必要があります。そうしないと、 ImageFilltoBorderは予想される範囲を超えます。

    • ImageCopymergeの透明度値は、過度の暗闇や色の歪みを避けるために、背景色と前景マップに従って調整する必要があります。

    • PNG画像の透明な背景を処理する場合、ターゲット画像がアルファチャネルをサポートしていることを確認する必要があります。そうしないと、透明性効果が失われます。

4。概要

この場合、 ImageFilltoBorderImageCopyMergeの組み合わせが複雑な画像処理効果を実現できることがわかります。最初に領域にImageFilltoBorderを入力し、次にImageCopyMergeで装飾またはロゴを追加します。これにより、境界、透かし、またはオーバーレイ効果を備えた画像をすばやく作成できます。これら2つの機能を使用するスキルを習得することは、PHP画像処理開発者にとって非常に実用的なスキルです。

<hr> <?php // tail phpコードの例(記事の内容とは関係ありません)エコー「これは、記事に関連していないテールコードの例です」。 ?>
 <span></span>