현재 위치: > 최신 기사 목록> 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">"这예하나段与文章无关的앞쪽코드 예제"</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` 이것들은 매우 실용적인 기능입니다。그들은 각각 명확한 기능을 가지고 있습니다,그러나 둘 다 함께 사용될 때,可以实现하나些更加灵活그리고高级的图像处理效果。이 기사는 실제 사례를 사용합니다,이 두 기능의 혼합 사용 방법에 대한 자세한 분석。

</span><span><span class="hljs-comment">## 하나、기능 소개</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 : 충전점 좌표를 시작하십시오.

  • $ BREARTH_COLOR : 경계 색상,이 색상이 발생할 때 채우기를 중지하십시오.

  • $ fill_color : 채우기 색상.

  1. imagecopymerge

    • 기능 : 한 이미지를 다른 이미지에 병합하고 투명성을 제어하십시오.

    • 일반적으로 사용되는 장면 : 워터 마크 만들기, 사진 오버레이 등

     <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. 혼합 사용의 장점

    • ImageFillToBorder는 닫힌 영역의 배경색을 빠르게 채워서 수동으로 그리기 테두리의 복잡성을 줄입니다.

    • imagecopymerge는 채워진 영역에서 반투명 요소를 겹쳐서 복잡한 층 효과를 달성 할 수 있습니다.

    • 이 둘의 조합은 배경 및 장식 레이어의 유연한 가공을 가능하게하여 시각적 미화를 달성 할 수 있습니다.

  2. 주목해야 할 것

    • 테두리 색상이 정확해야합니다. 그렇지 않으면 ImageFillToBorder가 예상 범위를 초과합니다.

    • imagecopymerge 의 투명성 값은 과도한 어둠이나 색 왜곡을 피하기 위해 배경색 및 전경 맵에 따라 조정해야합니다.

    • PNG 이미지의 투명한 배경을 처리 할 때 대상 이미지가 알파 채널을 지원하는지 확인해야합니다. 그렇지 않으면 투명성 효과가 손실됩니다.

4. 요약

이 경우 ImageFillToBorderImageCopymerge 의 조합이 복잡한 이미지 처리 효과를 달성 할 수 있음을 알 수 있습니다. 먼저 ImageFillToBorder 로 영역을 채우고 ImageCopymerge 로 장식 또는 로고를 추가하여 테두리, 워터 마크 또는 오버레이 효과로 빠르게 이미지를 생성 할 수 있습니다. 이 두 기능을 사용하는 기술을 마스터하는 것은 PHP 이미지 처리 개발자에게 매우 실용적인 기술입니다.

<hr> <? php // tail php 코드 예제 (기사의 내용과 관련이 없음) 에코 "이것은 기사와 관련이없는 꼬리 코드 예입니다."; ?>
 <span></span>