현재 위치: > 최신 기사 목록> ImageOpenPolygon () + imageCopyMerge ()는 이미지 합성을 구현합니다

ImageOpenPolygon () + imageCopyMerge ()는 이미지 합성을 구현합니다

M66 2025-05-29

PHP에서 이미지 처리는 매우 실용적이고 강력한 기능입니다. ImageOpenPolygon ()ImageCopymerge () 와 같은 GD 라이브러리에서 함수를 합리적으로 사용함으로써 복잡한 이미지 합성 효과를 쉽게 달성 할 수 있습니다. 이 기사는이 두 기능의 사용을 단계별로 소개하고 간단한 예를 통해 실제 응용 프로그램을 보여줍니다.

1. ImageOpenPolygon () 함수를 이해하십시오

ImageOpenPolygon ()은 이미지에서 열린 다각형 (즉, 끝에 연결되지 않은 다각형 라인)을 그리는 데 사용되는 함수입니다. 기본 구문은 다음과 같습니다.

 bool imageopenpolygon ( GdImage $image , array $points , int $num_points , int $color )
  • $ 이미지 : 이미지 리소스.

  • $ 포인트 : [x1, y1, x2, y2, ...] 와 같은 좌표 지점을 포함하는 배열.

  • $ num_points : 포인트 수.

  • $ Color : 라인의 색상이 그려집니다.

참고 : ImagePolygon () 과 달리 ImageOpenPolygon ()은 시작 및 엔드 포인트를 자동으로 연결하지 않습니다.

2. imageCopyMerge () 함수를 이해하십시오

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 = 완전히 불투명).

3. 실제 예 : 열린 다각형을 그려 배경 이미지로 병합하십시오.

다음은 완전한 예입니다. 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');

4. 요약

ImageOpenPolygon ()ImageCopymerge () 의 조합을 통해 다양한 오픈 그래픽을 쉽게 그릴 수 있으며 모든 배경 이미지에 유연하게 혼합되어 풍부한 시각적 효과를 달성 할 수 있습니다. 이 기술은 아바타 합성, 워터 마크 생산, 동적 그래픽 처리 및 기타 시나리오에서 널리 사용될 수 있습니다.