>  기사  >  백엔드 개발  >  PHP에서 투명도를 사용하여 PNG 크기를 적절하게 조정하는 방법은 무엇입니까?

PHP에서 투명도를 사용하여 PNG 크기를 적절하게 조정하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-25 05:03:15340검색

How to Properly Resize PNGs with Transparency in PHP?

PHP에서 투명도를 사용하여 PNG 크기 조정: 종합 솔루션

PHP에서는 배경이 투명한 PNG 이미지의 크기를 조정하는 것이 어려울 수 있습니다. 이 문제를 해결하려면 효과가 없는 것으로 입증된 하나의 코드 샘플에서 원하는 결과를 얻기 위해 몇 가지 중요한 수정이 필요합니다. 조정해야 할 사항에 대한 자세한 설명은 다음과 같습니다.

제공된 코드:

$this->image = imagecreatefrompng($filename);

imagesavealpha($this->image, true);
$newImage = imagecreatetruecolor($width, $height);

// Make a new transparent image and turn off alpha blending to keep the alpha channel
$background = imagecolorallocatealpha($newImage, 255, 255, 255, 127);
imagecolortransparent($newImage, $background);
imagealphablending($newImage, false);
imagesavealpha($newImage, true);

imagecopyresampled($newImage, $this->image, 0, 0, 0, 0, $width, $height,  $this->getWidth(), $this->getHeight());
$this->image = $newImage;  
imagepng($this->image,$filename);

이 코드를 주의 깊게 검토한 결과 imagecolorallocatealpha()가 있는 문에 문제가 있다는 것이 분명해졌습니다. 호출됩니다. 여기에서는 올바른 작업 순서가 중요합니다. imagecolorallocatealpha()를 실행하기 전에 먼저 혼합 모드를 false로 설정하고 알파 채널 저장 플래그를 true로 설정해야 합니다.

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

이 작업을 수행한 후에 수정하면 코드가 투명한 배경의 PNG 이미지 크기를 성공적으로 조정하여 배경이 바뀌는 것을 방지할 수 있어야 합니다. 검정색.

불투명도가 0에서 100 사이인 이미지 업데이트:

제공된 코드는 불투명도가 0으로 설정된 이미지에만 작동합니다. 이미지의 불투명도가 0과 100이면 배경이 검은색으로 나타납니다. 이 문제를 해결하려면 imagecopyresampled()를 대신 사용하도록 imagecopyresampled() 함수를 조정해야 합니다. 다양한 불투명도 수준으로 투명한 PNG 이미지를 더 잘 처리할 수 있기 때문입니다.

$transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
imagefilledrectangle($newImg, 0, 0, $newWidth, $newHeight, $transparent);
imagecopyresampled($newImg, $image, 0, 0, 0, 0, $newWidth, $newHeight, $src_w, $src_h);

위 내용은 PHP에서 투명도를 사용하여 PNG 크기를 적절하게 조정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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