ホームページ  >  記事  >  バックエンド開発  >  PHP の「imagecreatefrompng()」で PNG 画像が黒くなるのはなぜですか?

PHP の「imagecreatefrompng()」で PNG 画像が黒くなるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-03 14:46:30441ブラウズ

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>

解決策:

この問題を解決するには、特に PNG および GIF 画像の場合、imagecreatetruecolor() の前に追加の手順が必要です。これらの手順には次のものが含まれます:

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

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