PHP의 ImageOpenPolygon 기능을 사용하여 다각형 영역에서 이미지 함량을 자르기위한 솔루션 (마스크)을 구현하는 방법은 무엇입니까?
이미지 처리 중에 특정 영역을 자르기위한 필요성은 매우 일반적입니다. 우리는 여러 가지 방법으로 이미지 자르기를 달성 할 수 있습니다. 일반적인 방법 중 하나는 PHP 에서 ImageOpenpolygon 함수를 사용하여 다각형 영역 자르기를 수행하는 것입니다. 이 기능을 통해 다각형 영역을 정확하게 지정하고 이미지 에서이 영역의 내용을자를 수 있습니다. 다음으로 이미지 OpenPolygon 함수를 사용하는 방법에 대해 논의하고 다른 기능을 결합하여 이미지의 자르기 효과를 달성합니다.
다각형 지역 자르기의 기본 아이디어는 다음과 같습니다.
다각형 영역 정의 : 다각형의 각 정점을 지정하여 클리핑 영역을 정의합니다.
ImageOpenPolygon 기능을 적용하십시오 : ImageOpenPolygon 함수를 사용하여 이미지 에이 다각형을 그립니다.
자르기 이미지 : ImageCrop 또는 기타 자르기 방법을 통해 다각형 영역에서 함량을 추출하십시오.
이 솔루션을 구현하는 단계는 다음과 같습니다.
먼저 PHP의 imageCreatefromjpeg , imageCreatefrommpng 또는 기타 관련 기능을 사용하여로드 할 수있는 이미지를로드해야합니다.
$image = imagecreatefromjpeg('your_image.jpg'); // 이미지 파일로드
자르기 전에 자른 영역의 모양과 크기를 결정하는 다각형 정점을 정의해야합니다. 정점은 배열이어야하며 배열의 각 요소는 정점의 좌표입니다.
$vertices = [
[100, 100],
[200, 100],
[200, 200],
[100, 200]
];
이 코드는 사각형 영역을 나타내는 사각형 ( 100,100 , 200,100 , 200,200 , 100,200 )의 4 개의 정점을 정의합니다.
이미지 OpenPolygon 함수를 사용하여 이미지 컨텐츠를 자르려면 먼저 원래 이미지와 같은 크기의 투명한 이미지 마스크를 만들어야합니다.
$mask = imagecreatetruecolor(imagesx($image), imagesy($image));
$transparent = imagecolorallocatealpha($mask, 0, 0, 0, 127); // 투명한 배경을 만듭니다
imagefill($mask, 0, 0, $transparent);
ImageOpenPolygon 함수를 사용하여 마스크에 다각형을 그릴 수 있습니다. 여기서 우리는 다각형의 정점과 경계 색상을 지정합니다.
$polygonColor = imagecolorallocate($mask, 255, 255, 255); // 흰색 국경
imagefilledpolygon($mask, array_merge(...$vertices), count($vertices), $polygonColor); // 채우기 다각형을 그립니다
이 단계에서는 ImageFilledPolygon 함수를 사용하여 흰색 다각형을 그리며 내부를 채 웁니다.
이제 우리는 다각형 마스크가 생겼으므로 자르기를 위해 원본 이미지에 적용 할 수 있습니다. 다각형 영역 내의 내용 만 표시되도록 마스크를 이미지에 적용합니다.
imagecopymerge($image, $mask, 0, 0, 0, 0, imagesx($image), imagesy($image), 100);
마지막으로 자른 이미지를 출력하십시오. 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 기능을 사용하여 다각형 영역의 클리핑을 실현할 수 있습니다. 이 방법은 매우 유연하며 복잡한 절단 요구를 처리하는 데 사용될 수 있으며 다양한 모양의 면적 절단에 적합합니다. 다각형의 정점을 합리적으로 설정하면 이미지의 모든 부분을 정확하게 추출 할 수 있습니다.