현대 웹 개발에서 이미지 합성 기술은 역동적 인 이미지 생성, 스티칭 포스터, 게임 이미지 효과 만들기 등과 같은 다양한 시나리오에서 널리 사용됩니다. 강력한 서버 측 프로그래밍 언어로서 PHP는 풍부한 이미지 프로세싱 라이브러리로 이미지 합성 효과를 쉽게 달성 할 수 있습니다. 그 중에서도 ImagelayereFect는 여러 층을 신속하게 합성하고 이미지의 표현력을 향상시킬 수있는 매우 실용적인 기능입니다.
imagelayereffect 는 PHP의 GD 라이브러리에서 제공된 기능으로 이미지의 레이어 효과를 설정합니다. 주로 이미지 합성, 특수 효과 오버레이 및 기타 작업에 적합한 다중 층을 오버레이하여 최종 효과를 생성합니다. 이 기능을 합리적으로 사용하면 여러 이미지를 하나의 이미지로 결합 할 수 있으며 레이어의 투명성, 블렌딩 모드 및 기타 특수 효과를 사용자 정의 할 수 있습니다.
광고 이미지 합성 : 배경 이미지와 다른 요소 (예 : 텍스트, 아이콘 등)를 완전한 광고 이미지에 결합합니다.
워터 마크 처리 : 워터 마크 층을 원본 이미지로 오버레이하여 워터 마크 이미지를 생성합니다.
스티칭 사진 : 여러 작은 이미지를 하나의 큰 이미지로 병합하여 포스터, 퍼즐 및 기타 효과에서 일반적으로 발견됩니다.
동적 효과 : 층 투명성의 구배 효과를 달성하고 동적 느낌을 향상시킬 수 있습니다.
다음은 ImageLayereFect 함수를 사용하여 여러 층을 합성하는 방법을 보여주는 간단한 PHP 예입니다.
먼저 여러 이미지 파일을 준비해야합니다. 여기서 우리는 배경 그림과 워터 마크 그림의 예로 두 가지 그림을 찍습니다.
<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-variable">$watermark</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagecreatefrompng</span></span><span>(</span><span><span class="hljs-string">'watermark.png'</span></span><span>);
</span><span><span class="hljs-comment">// 워터 마크 이미지의 너비와 높이를 얻으십시오</span></span><span>
</span><span><span class="hljs-variable">$watermark_width</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesx</span></span><span>(</span><span><span class="hljs-variable">$watermark</span></span><span>);
</span><span><span class="hljs-variable">$watermark_height</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesy</span></span><span>(</span><span><span class="hljs-variable">$watermark</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
imagelayereffect를 사용하여 레이어의 블렌딩 모드를 설정하여 워터 마크가 배경 이미지와 혼합 될 수 있는지 확인하십시오.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 워터 마크 층을 배경 이미지에 적용하십시오,합성 효과를 설정하십시오“투명한”</span></span><span>
</span><span><span class="hljs-title function_ invoke__">imagelayereffect</span></span><span>(</span><span><span class="hljs-variable">$background</span></span><span>, IMG_EFFECT_OVERLAY);
</span><span><span class="hljs-comment">// 배경 이미지의 오른쪽 하단에 워터 마크를 놓습니다.</span></span><span>
</span><span><span class="hljs-variable">$dest_x</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesx</span></span><span>(</span><span><span class="hljs-variable">$background</span></span><span>) - </span><span><span class="hljs-variable">$watermark_width</span></span><span> - </span><span><span class="hljs-number">10</span></span><span>;
</span><span><span class="hljs-variable">$dest_y</span></span><span> = </span><span><span class="hljs-title function_ invoke__">imagesy</span></span><span>(</span><span><span class="hljs-variable">$background</span></span><span>) - </span><span><span class="hljs-variable">$watermark_height</span></span><span> - </span><span><span class="hljs-number">10</span></span><span>;
</span><span><span class="hljs-comment">// 층 병합</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">$watermark</span></span><span>, </span><span><span class="hljs-variable">$dest_x</span></span><span>, </span><span><span class="hljs-variable">$dest_y</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">$watermark_width</span></span><span>, </span><span><span class="hljs-variable">$watermark_height</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
합성 된 이미지는 ImageJpeg 또는 ImagePng 함수를 통해 출력 또는 저장 될 수 있습니다.
<span><span><span class="hljs-meta"><?php</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/jpeg'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">imagejpeg</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__">imagejpeg</span></span><span>(</span><span><span class="hljs-variable">$background</span></span><span>, </span><span><span class="hljs-string">'output_image.jpg'</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">$watermark</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
imagelayereffect는 다양한 합성 효과를 제공하며 필요에 따라 적절한 효과를 선택할 수 있습니다.
img_effect_replace : 첫 번째 레이어를 두 번째 레이어로 완전히 교체하십시오.
IMG_EFFECT_ALPHABLEND : 기본 투명성 블렌딩 효과.
IMG_EFFECT_OVERLAY : 배경 이미지의 오버레이 이미지 레이어는 일반적으로 워터 마킹 효과에 사용됩니다.
IMG_EFFECT_NORMAL : 이미지는 특수 효과를 사용하지 않고 직접 겹쳐집니다.
합성시 이미지 크기와 위치가 너무 크거나 작은 층으로 인해 부 자연스러운 합성 효과를 피하기 위해 합리적으로 설정되어 있는지 확인하십시오.
ImageLayereFect는 주로 이미지의 알파 채널에 의존하기 때문에 투명한 이미지를 처리 할 때 이미지 형식이 PNG 또는 투명성을 지원하는 기타 형식인지 확인해야합니다.
메모리를 확보하기 위해 이미지가 처리 된 후 이미지 리소스를 파괴해야합니다.
PHP의 imagelayeReffect 기능을 사용하면 여러 층을 하나의 이미지로 쉽게 합성하고 층의 투명성과 효과를 조정할 수 있습니다. 이미지 제작, 이미지 스티칭 또는 워터 마크 처리에 관계없이 ImageLayereffect 는 매우 유용한 도구입니다. IT를 마스터하면 다양한 요구를 쉽게 달성 할 수 있습니다.