首頁  >  文章  >  後端開發  >  為什麼「imagecreatefrompng()」渲染黑色背景而不是透明背景?

為什麼「imagecreatefrompng()」渲染黑色背景而不是透明背景?

Linda Hamilton
Linda Hamilton原創
2024-11-04 01:30:03484瀏覽

Why Does `imagecreatefrompng()` Render a Black Background Instead of Transparency?

Imagecreatefrompng() 渲染黑色背景而不是透明

提供的使用GD 庫產生縮圖的PHP 程式碼遇到了PNG 透明度的問題被替換為純黑色。為了解決這個問題,需要修改程式碼以保留 PNG 映像的 Alpha 通道資訊。

在 CropImage() 函數中,在 imagecreatetruecolor() 呼叫之後,應實現以下修改:

<code class="php">switch ($stype) {

    case 'gif':
    case 'png':
        // Allocate black color and set as background
        $background = imagecolorallocate($dimg, 0, 0, 0);
        // Set black as transparent
        imagecolortransparent($dimg, $background);

        // Disable alpha blending to preserve transparency
        imagealphablending($dimg, false);

        // Enable alpha channel saving to preserve full transparency range
        imagesavealpha($dimg, true);
        break;

    default:
        break;
}</code>

這些修改可確保刪除黑色背景並保留 PNG 的透明度。禁用 Alpha 混合可防止 PNG 的透明區域與黑色混合。啟動 Alpha 通道保存可保證保留完整的透明度範圍。

透過實現這些程式碼修改,縮圖產生器應正確保持 PNG 透明度,渲染透明背景而不是黑色。

以上是為什麼「imagecreatefrompng()」渲染黑色背景而不是透明背景?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn