首頁 > 後端開發 > php教程 > 為什麼使用 imagecreatefrompng() 時 PNG 縮圖會失去透明度?

為什麼使用 imagecreatefrompng() 時 PNG 縮圖會失去透明度?

Susan Sarandon
發布: 2024-11-04 11:33:30
原創
719 人瀏覽過

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>
登入後複製

透過加入這些步驟,我們確保:

  • 定義了透明背景顏色。
  • 透明顏色將從目標影像中刪除。
  • 停用 Alpha 混合以防止透明顏色與影像混合。
  • 保留 Alpha 通道訊息,從而保持產生的縮圖的透明度。

以上是為什麼使用 imagecreatefrompng() 時 PNG 縮圖會失去透明度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板