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);
主な変更点:
Update:
提供されたコードは、不透明度が 0 に設定された透明な背景を処理します。ただし、不透明度の値が 0 ~ 100 の画像の場合、それでも黒い背景が生成されます。残念ながら、GD ライブラリ内には、このユースケースを処理するための直接的な解決策はありません。
以上がPHP で PNG のサイズを変更するときに透明度を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。