ホームページ >バックエンド開発 >PHPチュートリアル >`imagecreatefrompng()` が透明ではなく黒い背景をレンダリングするのはなぜですか?

`imagecreatefrompng()` が透明ではなく黒い背景をレンダリングするのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-04 01:30:03591ブラウズ

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

Imagecreatefrompng() 透明度の代わりに黒い背景をレンダリング

GD ライブラリを使用してサムネイルを生成するために提供されている PHP コードで、PNG 透明度の問題が発生します。ソリッドブラックカラーに置き換えられます。この問題に対処するには、PNG 画像のアルファ チャネル情報を保持するようにコードを変更する必要があります。

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 の透明度が維持されます。アルファ ブレンディングを無効にすると、PNG の透明な領域が黒色とブレンドされなくなります。アルファ チャネル保存を有効にすると、完全な透明度範囲の保持が保証されます。

これらのコード変更を実装することで、サムネイル ジェネレーターは PNG 透明度を正しく維持し、黒ではなく透明な背景をレンダリングするようになります。

以上が`imagecreatefrompng()` が透明ではなく黒い背景をレンダリングするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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