ホームページ >バックエンド開発 >PHPチュートリアル >PHP GDlib で PNG のサイズを変更するときに透明度を維持するにはどうすればよいですか?

PHP GDlib で PNG のサイズを変更するときに透明度を維持するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-30 08:48:12287ブラウズ

How Can I Preserve Transparency When Resizing PNGs with PHP GDlib?

PHP GDlib を使用してサイズ変更された PNG の透明度を維持する

PHP の GDlib を使用して PNG 画像をリサンプリングすると、透明な領域が失われるという問題がよく発生します。元の画像の部分は単色で塗りつぶされます。これは、imagesavealpha() 関数が使用されている場合でも発生します。

リサンプリングされた画像で透明度が確実に保持されるようにするには、次の追加手順を実行する必要があります。

  1. 画像のアルファ ブレンディングを設定するimagealphablending($targetImage, false) を使用してモードを false に設定します。$targetImage はリサンプリングされたものです。 image.
  2. imagesavealpha($targetImage, true) を使用してイメージのアルファ保存を true に設定します。

コード例:

以下は修正されましたコードは、修正されたアプローチを示しています。

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

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