PHP에서 PNG 크기를 조정할 때 투명성을 어떻게 유지할 수 있습니까?

Susan Sarandon
풀어 주다: 2024-11-23 22:46:10
원래의
117명이 탐색했습니다.

How Can I Preserve Transparency When Resizing PNGs in PHP?

PHP에서 PNG 크기 조정 시 투명도 유지

PHP에서 배경이 투명한 PNG 이미지 크기를 조정할 때 투명도를 유지하는 것이 중요합니다. 유지. 그러나 많은 온라인 코드 샘플은 이를 제대로 구현하지 못하여 크기 조정 후 배경이 검은색으로 표시됩니다.

이 문제를 해결하려면 코드를 구체적으로 조정해야 합니다. imagecolorallocatealpha() 함수를 수행하기 전에 혼합 모드와 알파 채널 저장 플래그를 각각 false와 true로 구성하는 것이 중요합니다.

다음은 이러한 조정을 통합하는 업데이트된 코드 조각입니다.

<?php
/**
 * https://stackoverflow.com/a/279310/470749
 * 
 * @param resource $image
 * @param int $newWidth
 * @param int $newHeight
 * @return resource
 */
public function getImageResized($image, int $newWidth, int $newHeight) {
    $newImg = imagecreatetruecolor($newWidth, $newHeight);
    imagealphablending($newImg, false); // Turn off blending
    imagesavealpha($newImg, true); // Turn on save alpha channel
    $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
    imagefilledrectangle($newImg, 0, 0, $newWidth, $newHeight, $transparent);
    $src_w = imagesx($image);
    $src_h = imagesy($image);
    imagecopyresampled($newImg, $image, 0, 0, 0, 0, $newWidth, $newHeight, $src_w, $src_h);
    return $newImg;
}
?>
로그인 후 복사

이러한 수정을 통해 코드는 이후 PNG 이미지의 투명도를 효과적으로 유지해야 합니다. 크기 조정.

참고: 이 업데이트된 코드는 배경 불투명도가 0인 이미지에 대해서만 올바르게 작동합니다. 이미지의 불투명도가 0에서 100 사이인 경우 크기 조정 후 배경이 검은색으로 나타납니다.

위 내용은 PHP에서 PNG 크기를 조정할 때 투명성을 어떻게 유지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿