PHP で PNG のサイズを変更するときに透明度を維持する
PHP で背景が透明な PNG 画像のサイズを変更する場合、透明度が維持されていることを確認することが重要です。維持された。ただし、多くのオンライン コード サンプルはこれを適切に実現できず、サイズ変更後に背景が黒くなります。
この問題に対処するには、コードに特定の調整を行う必要があります。 imagecolorallocatealpha() 関数を実行する前に、ブレンディング モードとアルファ チャネル保存フラグの両方をそれぞれ false と true に設定することが重要です。
これらの調整を組み込んだ更新されたコード スニペットは次のとおりです。
<?php /** * https://stackoverflow.com/a/279310/470749 * * @param resource $image * @param int $newWidth * @param int $newHeight * @return resource */ public function getImageResized($image, int $newWidth, int $newHeight) { $newImg = imagecreatetruecolor($newWidth, $newHeight); imagealphablending($newImg, false); // Turn off blending imagesavealpha($newImg, true); // Turn on save alpha channel $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127); imagefilledrectangle($newImg, 0, 0, $newWidth, $newHeight, $transparent); $src_w = imagesx($image); $src_h = imagesy($image); imagecopyresampled($newImg, $image, 0, 0, 0, 0, $newWidth, $newHeight, $src_w, $src_h); return $newImg; } ?>
これらの変更により、コードは、その後の PNG 画像の透明性を効果的に維持する必要があります。
注: この更新されたコードは、背景の不透明度が 0 の画像に対してのみ正しく機能します。画像の不透明度が 0 ~ 100 の場合、サイズ変更後に背景は黒く表示されます。
以上がPHP で PNG のサイズを変更するときに透明度を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。