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

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

Barbara Streisand
リリース: 2024-11-28 14:20:16
オリジナル
618 人が閲覧しました

How to Preserve Transparency When Resizing PNGs in PHP?

PHP で背景が透明な PNG のサイズを効果的に変更する方法

PHP で透明な PNG 画像のサイズを変更するのは難しい作業ですが、画質を維持します。提供したコードでは、サイズ変更時に背景色が黒に変わるという問題が発生します。これを修正するには、以下の更新されたコードに従ってください:

$this->image = imagecreatefrompng($filename);

imagealphablending($this->image, false);
imagesavealpha($this->image, true);

$newImage = imagecreatetruecolor($width, $height);

// Allocate a new transparent color and enable alpha blending
$background = imagecolorallocatealpha($newImage, 255, 255, 255, 127);
imagefilledrectangle($newImage, 0, 0, $width, $height, $background);
imagealphablending($newImage, true);
imagesavealpha($newImage, true);

// Resize the image with transparent background preserved
imagecopyresampled($newImage, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->image = $newImage;

imagepng($this->image, $filename);
ログイン後にコピー

主な変更点:

  • imagealphablending(false): 透明色を割り当てる前にアルファ ブレンディングを無効にします。望ましくないことを防ぐためにBlending.
  • imagesavealpha(true): 画像のコピー前に透明な背景の保存を有効にします。
  • imagefilledrectangle(): 新しい画像を透明color.

Update:

提供されたコードは、不透明度が 0 に設定された透明な背景を処理します。ただし、不透明度の値が 0 ~ 100 の画像の場合、それでも黒い背景が生成されます。残念ながら、GD ライブラリ内には、このユースケースを処理するための直接的な解決策はありません。

以上がPHP で PNG のサイズを変更するときに透明度を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート