PHP에서 이미지 처리는 매우 실용적이고 강력한 기능입니다. ImageOpenPolygon () 및 ImageCopymerge () 와 같은 GD 라이브러리에서 함수를 합리적으로 사용함으로써 복잡한 이미지 합성 효과를 쉽게 달성 할 수 있습니다. 이 기사는이 두 기능의 사용을 단계별로 소개하고 간단한 예를 통해 실제 응용 프로그램을 보여줍니다.
ImageOpenPolygon ()은 이미지에서 열린 다각형 (즉, 끝에 연결되지 않은 다각형 라인)을 그리는 데 사용되는 함수입니다. 기본 구문은 다음과 같습니다.
bool imageopenpolygon ( GdImage $image , array $points , int $num_points , int $color )
$ 이미지 : 이미지 리소스.
$ 포인트 : [x1, y1, x2, y2, ...] 와 같은 좌표 지점을 포함하는 배열.
$ num_points : 포인트 수.
$ Color : 라인의 색상이 그려집니다.
참고 : ImagePolygon () 과 달리 ImageOpenPolygon ()은 시작 및 엔드 포인트를 자동으로 연결하지 않습니다.
ImageCopymerge () 는 한 이미지의 일부를 다른 이미지에 병합하는 데 사용되며 투명성을 지정할 수 있습니다. 기본 구문은 다음과 같습니다.
bool imagecopymerge(
GdImage $dst_image,
GdImage $src_image,
int $dst_x, int $dst_y,
int $src_x, int $src_y,
int $src_width, int $src_height,
int $pct
)
$ dst_image : 대상 이미지 리소스.
$ src_image : 소스 이미지 리소스.
$ dst_x, $ dst_y : 소스 이미지가 대상 이미지에있는 시작점의 좌표.
$ src_x, $ src_y : 소스 이미지를 복사하는 시작점.
$ src_width, $ src_height : 사본의 너비와 높이.
$ PCT : 병합 투명성 (0 = 완전히 투명, 100 = 완전히 불투명).
다음은 완전한 예입니다. ImageOpenPolygon ()을 사용하여 간단한 그래프를 그리고 ImageCopyMerge () 와 함께 배경 이미지에 결합합니다.
<?php
// 배경 이미지를 만듭니다
$background = imagecreatetruecolor(400, 300);
$white = imagecolorallocate($background, 255, 255, 255);
imagefill($background, 0, 0, $white);
// 전경지도를 만듭니다(다각형 그래프)
$polygon = imagecreatetruecolor(200, 200);
$transparent = imagecolorallocatealpha($polygon, 0, 0, 0, 127);
imagefill($polygon, 0, 0, $transparent);
imagesavealpha($polygon, true);
// 다각형의 점을 정의하십시오
$points = [
50, 50,
150, 50,
150, 150,
50, 150
];
// 색상을 할당합니다
$red = imagecolorallocate($polygon, 255, 0, 0);
// 열린 다각형을 그립니다
imageopenpolygon($polygon, $points, count($points) / 2, $red);
// 이미지를 합성합니다
imagecopymerge($background, $polygon, 100, 50, 0, 0, 200, 200, 70);
// 브라우저에 이미지를 출력합니다
header('Content-Type: image/png');
imagepng($background);
// 자원을 자유롭게합니다
imagedestroy($background);
imagedestroy($polygon);
?>
이 예에서 먼저 흰색 배경으로 이미지를 만든 다음 투명한 배경으로 전경 맵을 작성하고 ImageOpenPolygon ()을 사용하여 전경 맵에 빨간색 열린 사각형 개요를 그리며 imageCopymerge () 를 통해이 전경 맵을 70% 투명성으로 병합합니다.
최종 결과를 브라우저에 출력하는 대신 파일로 저장하려면 imagepng ($ buggercy)를 바꾸십시오. 와 함께:
imagepng($background, '/path/to/your/folder/merged_image.png');
물론, 여기 /path/to/폴더/ 경로는 다음과 같은 자체 서버 주소로 대체 할 수 있습니다.
imagepng($background, 'https://m66.net/uploads/merged_image.png');
ImageOpenPolygon () 과 ImageCopymerge () 의 조합을 통해 다양한 오픈 그래픽을 쉽게 그릴 수 있으며 모든 배경 이미지에 유연하게 혼합되어 풍부한 시각적 효과를 달성 할 수 있습니다. 이 기술은 아바타 합성, 워터 마크 생산, 동적 그래픽 처리 및 기타 시나리오에서 널리 사용될 수 있습니다.