>  기사  >  백엔드 개발  >  imagecreatefrompng()를 사용할 때 PNG 썸네일의 투명도가 떨어지는 이유는 무엇입니까?

imagecreatefrompng()를 사용할 때 PNG 썸네일의 투명도가 떨어지는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-04 11:33:30643검색

Why Do PNG Thumbnails Lose Transparency When Using imagecreatefrompng()?

이미지 썸네일의 PNG 투명도 손실

imagecreatefrompng() 함수를 사용하여 GD 라이브러리로 썸네일을 생성할 때 사용자에게 다음과 같은 문제가 발생했습니다. PNG의 투명한 배경이 단색 검정색으로 대체됩니다. 이 문제를 해결하려면 코드를 검토하고 해결책을 찾아보겠습니다.

제공된 코드는 이미지 크기를 효과적으로 조정하고 JPEG로 저장합니다. 그러나 문제는 imagecreatetruecolor() 함수를 사용하여 대상 이미지($dimg)를 초기화하는 데 있습니다. PNG 이미지의 투명도를 유지하려면 추가 단계가 필요합니다. 코드의 수정된 버전은 다음과 같습니다.

<code class="php">$dimg = imagecreatetruecolor($width_new, $height_new);

// Start changes for PNG transparency
switch ($stype) {

    case 'gif':
    case 'png':
        // Define black as a color
        $background = imagecolorallocate($dimg, 0, 0, 0);
        // Make black transparent
        imagecolortransparent($dimg, $background);
        // Disable blending to avoid mixing black with the image
        imagealphablending($dimg, false);
        // Enable alpha channel preservation
        imagesavealpha($dimg, true);
        break;

    default:
        break;
}
// End changes

$wm = $w/$nw;
$hm = $h/$nh;</code>

이러한 단계를 추가하면 다음이 보장됩니다.

  • 투명 배경색이 정의됩니다.
  • 투명 대상 이미지에서 색상이 제거됩니다.
  • 투명 색상이 이미지와 혼합되는 것을 방지하기 위해 알파 블렌딩이 비활성화되었습니다.
  • 알파 채널 정보가 보존되어 결과 썸네일의 투명도가 유지됩니다.

위 내용은 imagecreatefrompng()를 사용할 때 PNG 썸네일의 투명도가 떨어지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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