PHP에서 이미지 스케일링을 처리 할 때 출력 이미지의 품질을 보장하는 방법은 항상 개발자의 초점이었습니다. ImageCopyresAmpled () 함수는 고품질 스케일링 효과에 널리 사용되는 반면, ImageAntialias () 함수는 이미지의 가장자리에서 재규어 현상을 효과적으로 감소시킬 수 있습니다. 이 기사에서는이 두 기능을 결합하여 이미지 스케일링의 전반적인 품질을 향상시키는 방법을 자세히 설명합니다.
imageCopyResAmpled ()
이것은 소스 이미지를 확장하고 대상 이미지로 복사하는 데 사용되는 Bilinear 보간을 기반으로 한 이미지 복사 기능입니다. 축소 할 때 픽셀을 부드럽게하고 이미지 품질을 크게 향상시키고 픽셀 블록을 피합니다.
imageAntialias ()
이 기능은 이미지 리소스의 방지 효과를 활성화 또는 비활성화하는 데 사용되며, 주로 가장자리가 부드러워지고 재규어를 피하기 위해 주로 그리기 된 선에 작용합니다. 확대 된 이미지의 에지 처리에 매우 도움이됩니다.
일반적으로 먼저 imageecopyresampled ()를 사용하여 스케일링을 달성 한 다음 imageAntialias ()를 사용하여 대상 이미지를 항아리아를 사용하여 더 부드러운 이미지 가장자리를 얻습니다. 프로세스는 다음과 같습니다.
대상 이미지 리소스를 만듭니다.
안티 아리아를 활성화하려면 imageantialias () 에게 전화하십시오.
고품질 스케일링을 위해 imageecopyresampled ()를 사용하십시오.
이미지를 출력하거나 저장합니다.
<?php
// 원본 이미지 경로
$srcPath = 'https://m66.net/images/sample.jpg';
// 소스 이미지 리소스를 만듭니다
$srcImage = imagecreatefromjpeg($srcPath);
if (!$srcImage) {
die('소스 이미지를로드 할 수 없습니다');
}
// 소스 이미지 크기를 얻으십시오
$srcWidth = imagesx($srcImage);
$srcHeight = imagesy($srcImage);
// 대상 이미지 크기를 설정하십시오(여기에서 절반으로 스케일)
$dstWidth = $srcWidth / 2;
$dstHeight = $srcHeight / 2;
// 대상 이미지 리소스를 만듭니다
$dstImage = imagecreatetruecolor($dstWidth, $dstHeight);
// 반 알리 아스를 활성화하십시오
imageantialias($dstImage, true);
// 고품질 줌으로 이미지를 복사하십시오
imagecopyresampled(
$dstImage, // 대상 이미지 리소스
$srcImage, // 소스 이미지 리소스
0, 0, // 대상 이미지 시작 좌표
0, 0, // 소스 이미지 시작 좌표
$dstWidth, // 대상 이미지 너비
$dstHeight, // 대상 이미지 높이
$srcWidth, // 소스 이미지 너비
$srcHeight // 소스 이미지 높이
);
// 브라우저에 이미지를 출력합니다
header('Content-Type: image/jpeg');
imagejpeg($dstImage);
// 리소스를 자유롭게합니다
imagedestroy($srcImage);
imagedestroy($dstImage);
?>
ImageAntialias () 의 이미지 리소스에 대한 aliasing aliasing 프로세스는 라인을 그리는 경우에만 적용되며 imagecopyresampled () 의 스케일링 후 픽셀 품질을 직접 개선 할 수 없습니다. 그러나 특정 시나리오에서 항아리아를 켜면 이미지 에지 재깅이 느려질 수 있습니다.
복잡한 스케일링 요구의 경우 imageecopyresampled ()는 이미 최선의 선택이며 imageAntialias () 와 결합하여 라인, 텍스트 등과 같은 세부 사항을 더 최적화 할 수 있습니다.
GD 라이브러리가 지원되고 PHP 버전이 호환성 문제를 피하기 위해 최신인지 확인하십시오.