현재 위치: > 최신 기사 목록> ImageCrop 기능을 갖춘 자르기 PNG 이미지 및 투명한 배경을 유지하십시오.

ImageCrop 기능을 갖춘 자르기 PNG 이미지 및 투명한 배경을 유지하십시오.

gitbox 2025-05-29

PHP를 사용하여 이미지를 처리 ​​할 때 imageCrop () 함수는 지정된 영역으로 이미지를자를 수있는 매우 실용적인 도구입니다. 그러나 투명한 배경으로 PNG 사진을 다루는 경우 잘못된 처리로 인해 자르기 후에 투명한 배경이 손실되고 검은 색 또는 흰색 배경이 될 수 있습니다. 이 기사는 imageCrop () 함수로 자르면 PNG 이미지를 투명하게 유지하는 방법을 자세히 설명합니다.

1. imageCrop () 함수 소개

imageCrop () 는 PHP 5.5.0에 의해 도입 된 함수입니다. 기능은 새로운 이미지 자원을 반환하는 것입니다. 이는 지정된 크기에 따라 원래 이미지가 잘린 결과입니다. 기본 사용량은 다음과 같습니다.

 $cropped = imagecrop($image, ['x' => 100, 'y' => 100, 'width' => 200, 'height' => 200]);

$ 이미지 가 PNG 이미지이고 자르기 후 원본 이미지의 투명한 배경을 유지하려면주의를 기울여야하는 주요 세부 사항이 아래에 표시됩니다.

2. 투명한 배경 자르기의 핵심 지점

PNG 이미지를 처리하고 imageCrop ()를 사용하여 자르기 할 때 투명 부품은 일반적으로 추가 처리없이 검은 색으로 채워집니다. PHP는 기본적으로 투명 채널을 자동으로 유지하지 않기 때문입니다.

이 문제를 해결하려면 이미지를 자르고 다음 단계를 수행해야합니다.

  1. 새로운 투명 캔버스를 만듭니다.

  2. 알파 채널 절약 활성화;

  3. 자른 이미지를이 투명한 캔버스에 복사하십시오.

  4. 최종 출력 또는 이미지를 저장합니다.

3. 샘플 코드를 완료하십시오

다음은 투명한 배경으로 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 '자르기가 실패했습니다';
}
?>

4. 주목할만한 것들

  • imageCrop () 에 의해 반환 된 이미지 리소스에 올바른 알파 정보가 포함되어 있지 않기 때문에 imageCreatetRueColor ()를 사용하여 새로운 캔버스를 만들어야합니다.

  • ImageAlphableending ()ImagesAvealpha ()를 사용하는 것이 투명 배경을 유지하는 열쇠입니다.

  • 최종 이미지를 파일로 저장하려는 경우 imagepng ($ transparent) 대신 ImagePng ($ transparent, 'output.png')를 사용할 수 있습니다.

5. 요약

PNG 이미지를 자르고 투명한 배경 효과를 유지하는 것은 PHP에서 완전히 실현 가능합니다. 이미지 리소스의 알파 채널을 올바르게 설정하십시오. imageCrop () 과 투명 캔버스를 결합하면 자르기 영역을 정확하게 제어하고 이미지의 원래 투명성을 유지할 수 있으며, 이는 아바타 자르기 및 맵 처리와 같은 장면에 적합합니다.

이 기술을 마스터하면 PHP 이미지 처리의 품질과 전문성을 크게 향상시킬 수 있습니다.