PHP에서 이미지 처리는 항상 웹 사이트 개발, 동적 이미지 생성 또는 이미지 편집에서 매우 중요한 기능 중 하나였습니다. PHP는 다양한 이미지 처리 기능을 제공하며 ImageWBMP 및 ImageCopy는 이미지를 만들거나 편집하는 데 사용되는 매우 실용적인 기능 중 두 가지입니다.
ImageWBMP 는 PHP GD 라이브러리에서 이미지를 WBMP 형식으로 출력하는 기능입니다. 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를 사용하여 가공 된 이미지를 낮은 대역폭 또는 모바일 장치에 적합한 WBMP 형식으로 출력하십시오.
ImageWBMP 및 ImageCopy 기능을 결합하여 복잡한 이미지 오버레이를 달성하고 최종 이미지를 모바일 장치 또는 낮은 대역폭 환경에 적합한 WBMP 형식으로 변환 할 수 있습니다. 이 접근법은 이미지를 동적으로 생성하거나 사용자에게 개인화 된 컨텐츠를 제공 할 때 유용합니다. 특히 구식 모바일 장치 또는 특정 이미지 형식을 지원하는 응용 프로그램을 개발할 때.
이 사례 가이 두 기능을 사용하여 PHP에서 복잡한 이미지 효과를 달성하는 방법을 더 잘 이해하는 데 도움이되기를 바랍니다.