ホームページ >バックエンド開発 >PHPチュートリアル >`imagecreatefrompng()` が透明ではなく黒い背景をレンダリングするのはなぜですか?
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 サイトの他の関連記事を参照してください。