如何在 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);
主要更改:
更新:
提供的代码处理不透明度设置为 0 的透明背景。但是,对于不透明度值在 0 到 100 之间的图像,它仍然会产生黑色背景。不幸的是,GD 库中没有直接的解决方案来处理这个用例。
以上是在 PHP 中调整 PNG 大小时如何保持透明度?的详细内容。更多信息请关注PHP中文网其他相关文章!