현재 위치: > 최신 기사 목록> 투명한 이미지의 고품질 스케일링을 달성하기 위해 imageecopyresampled ()와 함께 imagecolorallocatealpha () 함수를 사용하는 방법?

투명한 이미지의 고품질 스케일링을 달성하기 위해 imageecopyresampled ()와 함께 imagecolorallocatealpha () 함수를 사용하는 방법?

M66 2025-05-25

PHP에서 이미지 처리 기능은 특히 이미지 스케일링, 자르기 및 기타 작업에서 매우 강력합니다. 그 중에서도 imagecolorallocatealpha ()imagecopyresampled () 는 일반적으로 사용되는 두 가지 이미지 처리 기능입니다. 전자는 이미지에 투명한 색상을 할당하는 데 사용되는 반면, 후자는 이미지를 고품질로 스케일링하는 데 사용됩니다. 이 두 기능을 결합하는 것은 투명한 배경 (예 : PNG 형식)을 가진 고품질 이미지 스케일링을 수행해야 할 때 매우 효과적입니다.

1. imagecolorallocatealpha ()imagecopyresampled () 의 역할을 이해합니다.

  • ImageColoralLocatealpha () 함수는 이미지의 색상을 만들고 투명성 (알파)을 설정하는 데 사용됩니다. 투명도 범위는 0에서 127, 0은 완전히 불투명하고 127은 완전히 투명한 것을 의미합니다.

  • ImageCopyresAmpled () 함수는 픽셀 화 또는 흐릿함을 피하기 위해 고품질 보간 알고리즘을 사용하여 복사 프로세스 중에 소스 이미지에서 대상 이미지 및 스케일로 복사하는 데 사용됩니다.

이 두 기능은 투명성으로 이미지 스케일링 작업을 효과적으로 처리하는 데 사용됩니다.

2. 예를 사용하십시오 : 투명성이있는 고품질 스케일링 이미지

다음은 투명한 이미지의 고품질 스케일링을 수행하기 위해 imagecolorallocatealpha ()imagecopyresampled ()를 사용하는 방법을 보여주는 특정 PHP 예입니다.

 <?php
// 오픈 소스 이미지(투명하다고 가정합니다 PNG 영상)
$source = imagecreatefrompng('source_image.png');

// 获取源영상的宽度和高度
$src_width = imagesx($source);
$src_height = imagesy($source);

// 设定目标영상的宽度和高度
$new_width = 400;
$new_height = 300;

// 创建目标영상并保留透明度
$destination = imagecreatetruecolor($new_width, $new_height);

// 为目标영상分配透明背景
$transparent = imagecolorallocatealpha($destination, 0, 0, 0, 127); // 완전히 투명합니다
imagefill($destination, 0, 0, $transparent);

// 启用目标영상的透明处理
imagesavealpha($destination, true);

// 사용 imagecopyresampled 고품질 스케일링을 수행하십시오
imagecopyresampled($destination, $source, 0, 0, 0, 0, $new_width, $new_height, $src_width, $src_height);

// 输出目标영상到浏览器
header('Content-Type: image/png');
imagepng($destination);

// 기억을 청소하십시오
imagedestroy($source);
imagedestroy($destination);
?>

3. 코드 파싱

  • 오픈 소스 이미지 : imageCreatefrommpng ()를 사용하여 투명성이있는 PNG 이미지 파일을여십시오.

  • 이미지 크기 얻기 : imagesx ()imagesy ()를 통해 소스 이미지의 너비와 높이를 가져옵니다.

  • 대상 이미지 생성 : imageCreatetRueColor ()를 사용하여 새 진정한 색상 이미지를 만들고 대상 이미지에 투명한 배경을 할당하십시오.

  • 투명한 색상 할당 : ImageColoralLocateAlpha () 를 통해 대상 이미지에 완전히 투명한 색상을 할당하고 ImageFill () 을 통해 대상 이미지의 배경을 채 웁니다.

  • 투명한 저장 활성화 : ImagesAvealpha ()를 사용하여 대상 이미지의 투명 처리를 가능하게하여 투명성 정보가 보존되도록하십시오.

  • 고품질 스케일링 : imageCopyResAmpled () 기능을 통해 소스 이미지를 대상 크기로 스케일링하고 높은 이미지 품질을 유지합니다.

  • 출력 이미지 : ImagePng ()를 통해 생성 된 이미지를 브라우저에 출력합니다.

  • 메모리 청소 : 마지막으로 imageStroy ()를 사용하여 메모리를 제거하십시오.

4. 주목할만한 것들

  • imagecolorallocatealpha ()를 사용하여 투명한 색상을 이미지에 할당 할 때, 투명도 값은 0에서 127이며, 여기서 0은 완전히 불투명하고 127은 완전히 투명합니다.

  • 투명성 정보를 유지하려면 이미지를 출력하기 전에 ImagesAvealpha ()를 활성화하십시오.

  • ImageCopyresAmpled ()는 이미지 스케일링 동안 재깅 현상을 효과적으로 감소시킬 수 있으며 대부분의 이미지 스케일링 요구에 적합한 높은 이미지 품질을 유지할 수 있습니다.

5. 요약

imagecolorallocatealpha ()imagecopyresampled ()를 결합함으로써 투명성으로 이미지의 고품질 스케일링을 쉽게 달성 할 수 있습니다. 이 방법은 PNG와 같은 투명한 배경을 가진 이미지에 적합하며, 스케일링시 투명성 정보의 손실을 피하고 스케일링 후 이미지 품질이 가능한 한 높아질 수 있습니다.


다음은 기사와 관련이없는 부분입니다.