PHP를 사용하여 이미지를 처리 할 때 imageCrop () 함수는 지정된 영역으로 이미지를자를 수있는 매우 실용적인 도구입니다. 그러나 투명한 배경으로 PNG 사진을 다루는 경우 잘못된 처리로 인해 자르기 후에 투명한 배경이 손실되고 검은 색 또는 흰색 배경이 될 수 있습니다. 이 기사는 imageCrop () 함수로 자르면 PNG 이미지를 투명하게 유지하는 방법을 자세히 설명합니다.
imageCrop () 는 PHP 5.5.0에 의해 도입 된 함수입니다. 기능은 새로운 이미지 자원을 반환하는 것입니다. 이는 지정된 크기에 따라 원래 이미지가 잘린 결과입니다. 기본 사용량은 다음과 같습니다.
$cropped = imagecrop($image, ['x' => 100, 'y' => 100, 'width' => 200, 'height' => 200]);
$ 이미지 가 PNG 이미지이고 자르기 후 원본 이미지의 투명한 배경을 유지하려면주의를 기울여야하는 주요 세부 사항이 아래에 표시됩니다.
PNG 이미지를 처리하고 imageCrop ()를 사용하여 자르기 할 때 투명 부품은 일반적으로 추가 처리없이 검은 색으로 채워집니다. PHP는 기본적으로 투명 채널을 자동으로 유지하지 않기 때문입니다.
이 문제를 해결하려면 이미지를 자르고 다음 단계를 수행해야합니다.
새로운 투명 캔버스를 만듭니다.
알파 채널 절약 활성화;
자른 이미지를이 투명한 캔버스에 복사하십시오.
최종 출력 또는 이미지를 저장합니다.
다음은 투명한 배경으로 PNG 이미지를 올바르게 자르고 투명하게 유지하는 방법을 보여주는 전체 샘플 코드입니다.
<?php
// 원본 이미지를로드하십시오
$sourcePath = 'https://gitbox.net/images/sample.png';
$src = imagecreatefrompng($sourcePath);
// 작물 영역을 설정하십시오
$cropArea = [
'x' => 50,
'y' => 50,
'width' => 200,
'height' => 200
];
// 이미지를 자르십시오
$cropped = imagecrop($src, $cropArea);
if ($cropped !== false) {
// 새로운 투명 캔버스를 만듭니다
$transparent = imagecreatetruecolor($cropArea['width'], $cropArea['height']);
// 투명성 혼합 모드를 활성화합니다
imagealphablending($transparent, false);
// 완료를 저장하십시오alpha채널 정보
imagesavealpha($transparent, true);
// 투명한 색상으로 캔버스를 채우십시오
$transparentColor = imagecolorallocatealpha($transparent, 0, 0, 0, 127);
imagefill($transparent, 0, 0, $transparentColor);
// 拷贝이미지를 자르십시오到透明画布上
imagecopy($transparent, $cropped, 0, 0, 0, 0, $cropArea['width'], $cropArea['height']);
// 브라우저에 이미지를 출력합니다
header('Content-Type: image/png');
imagepng($transparent);
// 자원을 파괴하십시오
imagedestroy($transparent);
imagedestroy($cropped);
imagedestroy($src);
} else {
echo '자르기가 실패했습니다';
}
?>
imageCrop () 에 의해 반환 된 이미지 리소스에 올바른 알파 정보가 포함되어 있지 않기 때문에 imageCreatetRueColor ()를 사용하여 새로운 캔버스를 만들어야합니다.
ImageAlphableending () 및 ImagesAvealpha ()를 사용하는 것이 투명 배경을 유지하는 열쇠입니다.
최종 이미지를 파일로 저장하려는 경우 imagepng ($ transparent) 대신 ImagePng ($ transparent, 'output.png')를 사용할 수 있습니다.
PNG 이미지를 자르고 투명한 배경 효과를 유지하는 것은 PHP에서 완전히 실현 가능합니다. 이미지 리소스의 알파 채널을 올바르게 설정하십시오. imageCrop () 과 투명 캔버스를 결합하면 자르기 영역을 정확하게 제어하고 이미지의 원래 투명성을 유지할 수 있으며, 이는 아바타 자르기 및 맵 처리와 같은 장면에 적합합니다.
이 기술을 마스터하면 PHP 이미지 처리의 품질과 전문성을 크게 향상시킬 수 있습니다.