首頁 >後端開發 >php教程 >為什麼在 PHP 中使用「imagecreatefrompng()」PNG 映像會變黑?

為什麼在 PHP 中使用「imagecreatefrompng()」PNG 映像會變黑?

Susan Sarandon
Susan Sarandon原創
2024-11-03 14:46:30484瀏覽

Why are PNG images turning black with `imagecreatefrompng()` in PHP?

使用imagecreatefrompng() 將PNG 圖像變成黑色

問題:

用戶遇到了使用GD 庫建立縮圖時,PHP 的imagecreatefrompng() 函數將 PNG 映像中的透明區域轉換為純黑色的問題。

PHP 縮圖建立程式碼:

<code class="php">function cropImage($nw, $nh, $source, $stype, $dest) {
  // ...
  switch($stype) {
    case 'png':
      $simg = imagecreatefrompng($source);
      break;
    // ...
  }
  // ...
}</code>

解:

要解決此問題,需要在imagecreate () 先前執行其他步驟,特別是對於PNG 和GIF 影像。這些步驟涉及:

<code class="php">// Before imagecreatetruecolor()

$dimg = imagecreatetruecolor($width_new, $height_new); // png ?: gif

// Additional steps for PNG and GIF

switch ($stype) {

    case 'gif':
    case 'png':
        // Black color
        $background = imagecolorallocate($dimg , 0, 0, 0);
        // Remove black from placeholder
        imagecolortransparent($dimg, $background);
        // Turn off alpha blending
        imagealphablending($dimg, false);
        // Turn on alpha channel saving
        imagesavealpha($dimg, true);
        break;

    default:
        break;
}</code>

透過實施這些附加步驟,在使用 imagecreatefrompng() 建立縮圖時將保留 PNG 影像中的透明區域。

以上是為什麼在 PHP 中使用「imagecreatefrompng()」PNG 映像會變黑?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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