>백엔드 개발 >PHP 튜토리얼 >PHP의 GDlib을 사용하여 투명하게 PNG 크기를 조정하고 알파 채널을 보존하려면 어떻게 해야 합니까?

PHP의 GDlib을 사용하여 투명하게 PNG 크기를 조정하고 알파 채널을 보존하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-03 02:43:091003검색

How Can I Resize PNGs with Transparency Using PHP's GDlib and Preserve Alpha Channels?

PHP의 GDlib을 사용하여 투명도로 PNG 크기 조정

PNG 파일을 처리할 때 이미지 투명성을 유지하는 것이 중요합니다. GDlib은 이미지 조작 기능을 제공하지만 투명도가 보존된 PNG 크기를 조정하는 것이 어려울 수 있습니다.

GD의 imagecopyresampled 기능을 사용할 때 직면하는 한 가지 문제는 원본 PNG의 투명한 영역이 단색으로 대체된다는 것입니다. Imagesavealpha를 true로 설정했는데도 이런 문제가 발생합니다.

이 문제를 해결하려면 알파 설정을 올바르게 지정하는 것이 중요합니다. PHP에서는 알파 설정이 소스 이미지가 아닌 대상 이미지에 적용됩니다. 대상 이미지의 알파 속성을 조정하여 투명도를 유지할 수 있습니다.

imagealphablending( $targetImage, false );
imagesavealpha( $targetImage, true );

imagealphablending(false)는 모든 블렌딩을 비활성화하고 이미지의 알파 채널을 존중합니다. Imagesavealpha(true)는 PNG의 알파 채널이 출력에 유지되도록 합니다.

다음은 이러한 조정 사항을 통합한 수정된 PHP 코드 조각입니다.

$uploadTempFile = $myField[ 'tmp_name' ]
list( $uploadWidth, $uploadHeight, $uploadType ) 
  = getimagesize( $uploadTempFile );

$srcImage = imagecreatefrompng( $uploadTempFile ); 

$targetImage = imagecreatetruecolor( 128, 128 );   
imagealphablending( $targetImage, false );
imagesavealpha( $targetImage, true );

imagecopyresampled( $targetImage, $srcImage, 
                    0, 0, 
                    0, 0, 
                    128, 128, 
                    $uploadWidth, $uploadHeight );

imagepng(  $targetImage, 'out.png', 9 );

이 수정된 코드는 효과적으로 PNG 크기를 조정해야 합니다. 투명도를 유지하면서 이미지. 모든 경우에 완벽하다고 보장할 수는 없지만 확실한 출발점을 제공합니다.

위 내용은 PHP의 GDlib을 사용하여 투명하게 PNG 크기를 조정하고 알파 채널을 보존하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.