PHP の GDlib を使用して透明度を指定して PNG のサイズを変更する
PNG ファイルを扱う場合、画像の透明度を維持することが不可欠です。 GDlib は画像操作機能を提供しますが、透明度を維持したまま PNG のサイズを変更するのは難しい場合があります。
GD の imagecopyresampled 関数を使用するときに発生する問題の 1 つは、元の PNG の透明な領域が単色に置き換えられることです。これは、imagesavealpha を true に設定しているにもかかわらず発生します。
これを解決するには、アルファ設定を正しく指定することが重要です。 PHP では、アルファ設定はソース イメージではなくターゲット イメージに適用されます。ターゲット画像のアルファプロパティを調整することで、透明度の保持を実現できます。
imagealphablending( $targetImage, false ); imagesavealpha( $targetImage, true );
imagealphablending(false) は、ブレンドを無効にし、画像のアルファ チャネルを尊重します。 imageavealpha(true) は、PNG のアルファ チャネルが出力に保持されることを保証します。
これらの調整を組み込んだ改訂された PHP コード スニペットは次のとおりです:
$uploadTempFile = $myField[ 'tmp_name' ] list( $uploadWidth, $uploadHeight, $uploadType ) = getimagesize( $uploadTempFile ); $srcImage = imagecreatefrompng( $uploadTempFile ); $targetImage = imagecreatetruecolor( 128, 128 ); imagealphablending( $targetImage, false ); imagesavealpha( $targetImage, true ); imagecopyresampled( $targetImage, $srcImage, 0, 0, 0, 0, 128, 128, $uploadWidth, $uploadHeight ); imagepng( $targetImage, 'out.png', 9 );
この変更されたコードにより、PNG のサイズが効果的に変更されます。透明感を保ちながら画像を表示します。すべてのケースに完璧であることが保証されているわけではありませんが、確実な出発点となることに注意してください。
以上がPHP の GDlib を使用して透明度を保ったまま PNG のサイズを変更し、アルファ チャネルを保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。