<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 기사 제목:imagealphablending 그리고 imagecopy 함께 사용하는 방법?투명한 합성의 정확한 시연</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
---
존재하다 PHP 이미지 처리가 수행 될 때,`imagealphablending` 그리고 `imagecopy` 이들은 매우 일반적으로 사용되는 두 가지 기능입니다,尤其是존재하다涉及透明度合成그리고图像合成的场景中。이 두 기능을 결합하여 사용하십시오,투명한 배경으로 이미지 합성을 실현할 수 있습니다,像是존재하다海报制作、GIF 합성 및 워터 마크 추가 작업에서 매우 실용적입니다.。
</span><span><span class="hljs-comment">### 1. `imagealphablending` 기능 소개</span></span><span>
`imagealphablending` 이미지가 켜져 있는지 여부를 제어하는 기능입니다.。它影响的是图像的透明度그리고混合方式。하이브리드 모드가 켜져있을 때,이미지의 투명 부분은 배경 이미지의 색상에 따라 합성됩니다.。
</span><span><span class="hljs-comment">#### 기능 프로토 타입:</span></span><span>
```php
</span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">imagealphablending</span></span><span>(resource </span><span><span class="hljs-variable">$image</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$blendmode</span></span><span>);
</span></span>$ 이미지 : 작동 해야하는 이미지 리소스.
$ blendmode : 부울 값, 믹싱 모드를 활성화하는 진정한 수단, 믹싱 모드를 끄는 거짓 수단.
기본적으로, ImageAlphableding은 블렌딩 모드를 활성화하기 위해 작용하므로 픽셀의 투명 부분이 배경 이미지와 혼합됩니다.
ImageCopy 함수는 하나의 이미지를 다른 이미지의 지정된 위치에 복사하는 데 사용됩니다. 투명한 픽셀의 복사를 지원하므로 투명한 이미지를 처리 할 때 ImageAlphableding 과 함께 사용할 수 있습니다.
<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">$dst_image</span></span><span>, resource </span><span><span class="hljs-variable">$src_image</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_width</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$src_height</span></span><span>);
</span></span>$ dst_image : 대상 이미지 리소스.
$ src_image : 소스 이미지 리소스.
$ dst_x , $ dst_y : 대상 이미지의 왼쪽 상단의 위치.
$ src_x , $ src_y : 소스 이미지의 왼쪽 상단의 위치.
$ src_width , $ src_height : 소스 이미지에서 복사 할 영역의 너비와 높이.
투명한 이미지 합성을 수행 할 때 소스와 대상 이미지가 투명성을 올바르게 처리하도록하는 것이 가장 중요합니다. 다음은 ImageAlphableding 과 Imagecopy를 결합한 투명한 합성에 대한 올바른 데모입니다.
<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">$dst_image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatetruecolor</span></span><span>(</span><span><span class="hljs-number">500</span></span><span>, </span><span><span class="hljs-number">500</span></span><span>);
</span><span><span class="hljs-variable">$src_image</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-string">'source_image.png'</span></span><span>); </span><span><span class="hljs-comment">// 소스 이미지가 a PNG 체재</span></span><span>
</span><span><span class="hljs-comment">// 대상 이미지의 투명 배경을 설정합니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagesavealpha</span></span><span>(</span><span><span class="hljs-variable">$dst_image</span></span><span>, </span><span><span class="hljs-literal">true</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">$dst_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-number">127</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">$dst_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">$transparent</span></span><span>);
</span><span><span class="hljs-comment">// 투명 하이브리드 모드를 켜십시오</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagealphablending</span></span><span>(</span><span><span class="hljs-variable">$dst_image</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagecopy</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-number">100</span></span><span>, </span><span><span class="hljs-number">100</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__">imagesx</span></span><span>(</span><span><span class="hljs-variable">$src_image</span></span><span>), </span><span><span class="hljs-title function_ invoke__">imagesy</span></span><span>(</span><span><span class="hljs-variable">$src_image</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">$dst_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">$dst_image</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagedestroy</span></span><span>(</span><span><span class="hljs-variable">$src_image</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>대상 이미지 생성 :
imageCreatetRueColor ()를 사용하여 크기 500x500의 대상 이미지 리소스를 만듭니다.
소스 이미지로드 :
imageCreateFrommpng ()를 사용하여 소스 이미지를로드하면 PNG가 투명한 배경을 지원하기 때문에 PNG 파일이라고 가정합니다.
투명 배경 설정 :
ImagesAvealpha ()는 PHP에 이미지의 투명성 정보를 저장하도록 지시합니다.
ImageColoralLocateAlpha ()는 투명한 색상을 할당하고 전체 대상 이미지를 ImageFill () 로 채우려면 대상 이미지가 투명하도록합니다.
투명 하이브리드 모드 켜기 :
투명한 합성의 블렌딩 모드를 가능하게하려면 imagealphableding ($ dst_image, true)을 사용하십시오.
합성 이미지 :
imageCopy ()를 사용하여 소스 이미지를 대상 이미지의 지정된 위치로 복사하십시오. 합성 효과는 소스 이미지의 투명성을 유지합니다.
출력 이미지 :
마지막으로, 합성 된 이미지는 ImagePng () 를 통해 출력됩니다.
자원 정리 :
ImageStroy () 를 사용하여 메모리 누출을 피하기 위해 이미지 리소스를 정리하십시오.
ImageAlphableding 과 ImageCopy 기능의 조합은 투명성으로 이미지 합성을 처리 할 때 PHP가 매우 효율적입니다. 키는 대상 이미지가 투명성 정보를 올바르게 처리하고 합성 중에 투명 혼합 모드를 켜서 소스 이미지의 투명 부분을 올바르게 표시 할 수 있도록하는 것입니다.
이 두 가지 기능을 합리적으로 사용함으로써 투명한 이미지의 합성 효과를 쉽게 달성 할 수 있으며, 이는 투명성 처리가 필요한 다양한 이미지 편집 시나리오에 적합합니다.