ホームページ  >  記事  >  バックエンド開発  >  imagecreatefrompng() を使用すると PNG サムネイルの透明度が失われるのはなぜですか?

imagecreatefrompng() を使用すると PNG サムネイルの透明度が失われるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 11:33:30638ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。