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