현재 위치: > 최신 기사 목록> 다각형 영역에서 이미지 함량을 자르기위한 구현 솔루션 (마스크)

다각형 영역에서 이미지 함량을 자르기위한 구현 솔루션 (마스크)

M66 2025-05-29

PHP의 ImageOpenPolygon 기능을 사용하여 다각형 영역에서 이미지 함량을 자르기위한 솔루션 (마스크)을 구현하는 방법은 무엇입니까?

소개

이미지 처리 중에 특정 영역을 자르기위한 필요성은 매우 일반적입니다. 우리는 여러 가지 방법으로 이미지 자르기를 달성 할 수 있습니다. 일반적인 방법 중 하나는 PHP 에서 ImageOpenpolygon 함수를 사용하여 다각형 영역 자르기를 수행하는 것입니다. 이 기능을 통해 다각형 영역을 정확하게 지정하고 이미지 에서이 영역의 내용을자를 수 있습니다. 다음으로 이미지 OpenPolygon 함수를 사용하는 방법에 대해 논의하고 다른 기능을 결합하여 이미지의 자르기 효과를 달성합니다.

기본 아이디어

다각형 지역 자르기의 기본 아이디어는 다음과 같습니다.

  1. 다각형 영역 정의 : 다각형의 각 정점을 지정하여 클리핑 영역을 정의합니다.

  2. ImageOpenPolygon 기능을 적용하십시오 : ImageOpenPolygon 함수를 사용하여 이미지 에이 다각형을 그립니다.

  3. 자르기 이미지 : ImageCrop 또는 기타 자르기 방법을 통해 다각형 영역에서 함량을 추출하십시오.

이 솔루션을 구현하는 단계는 다음과 같습니다.

1 단계 : 이미지를로드하십시오

먼저 PHP의 imageCreatefromjpeg , imageCreatefrommpng 또는 기타 관련 기능을 사용하여로드 할 수있는 이미지를로드해야합니다.

 $image = imagecreatefromjpeg('your_image.jpg');  // 이미지 파일로드

2 단계 : 다각형의 정점을 정의하십시오

자르기 전에 자른 영역의 모양과 크기를 결정하는 다각형 정점을 정의해야합니다. 정점은 배열이어야하며 배열의 각 요소는 정점의 좌표입니다.

 $vertices = [
    [100, 100],
    [200, 100],
    [200, 200],
    [100, 200]
];

이 코드는 사각형 영역을 나타내는 사각형 ( 100,100 , 200,100 , 200,200 , 100,200 )의 4 개의 정점을 정의합니다.

3 단계 : 투명한 마스크를 만듭니다

이미지 OpenPolygon 함수를 사용하여 이미지 컨텐츠를 자르려면 먼저 원래 이미지와 같은 크기의 투명한 이미지 마스크를 만들어야합니다.

 $mask = imagecreatetruecolor(imagesx($image), imagesy($image));
$transparent = imagecolorallocatealpha($mask, 0, 0, 0, 127);  // 투명한 배경을 만듭니다
imagefill($mask, 0, 0, $transparent);

4 단계 : 다각형 영역을 그립니다

ImageOpenPolygon 함수를 사용하여 마스크에 다각형을 그릴 수 있습니다. 여기서 우리는 다각형의 정점과 경계 색상을 지정합니다.

 $polygonColor = imagecolorallocate($mask, 255, 255, 255);  // 흰색 국경
imagefilledpolygon($mask, array_merge(...$vertices), count($vertices), $polygonColor);  // 채우기 다각형을 그립니다

이 단계에서는 ImageFilledPolygon 함수를 사용하여 흰색 다각형을 그리며 내부를 채 웁니다.

5 단계 : 마스크를 사용하여 이미지를 자릅니다

이제 우리는 다각형 마스크가 생겼으므로 자르기를 위해 원본 이미지에 적용 할 수 있습니다. 다각형 영역 내의 내용 만 표시되도록 마스크를 이미지에 적용합니다.

 imagecopymerge($image, $mask, 0, 0, 0, 0, imagesx($image), imagesy($image), 100);

6 단계 : 자른 이미지를 출력합니다

마지막으로 자른 이미지를 출력하십시오. ImageJPeg , ImagePng 및 기타 기능을 사용하여 이미지를 출력하거나 저장할 수 있습니다.

 header('Content-Type: image/jpeg');
imagejpeg($image);  // 출력 자른 이미지
imagedestroy($image);  // 이미지 리소스 릴리스
imagedestroy($mask);  // 마스크 리소스 릴리스

완전한 코드 예제

 <?php
$image = imagecreatefromjpeg('your_image.jpg');  // 이미지 파일로드

// 다각형 정점을 정의하십시오
$vertices = [
    [100, 100],
    [200, 100],
    [200, 200],
    [100, 200]
];

// 투명한 마스크를 만듭니다
$mask = imagecreatetruecolor(imagesx($image), imagesy($image));
$transparent = imagecolorallocatealpha($mask, 0, 0, 0, 127);
imagefill($mask, 0, 0, $transparent);

// 다각형을 그립니다
$polygonColor = imagecolorallocate($mask, 255, 255, 255);
imagefilledpolygon($mask, array_merge(...$vertices), count($vertices), $polygonColor);

// 마스크로 자르기 이미지
imagecopymerge($image, $mask, 0, 0, 0, 0, imagesx($image), imagesy($image), 100);

// 출력 이미지
header('Content-Type: image/jpeg');
imagejpeg($image);

imagedestroy($image);
imagedestroy($mask);
?>

요약

위의 단계를 통해 PHP의 ImageOpenPolygon 기능을 사용하여 다각형 영역의 클리핑을 실현할 수 있습니다. 이 방법은 매우 유연하며 복잡한 절단 요구를 처리하는 데 사용될 수 있으며 다양한 모양의 면적 절단에 적합합니다. 다각형의 정점을 합리적으로 설정하면 이미지의 모든 부분을 정확하게 추출 할 수 있습니다.