首页 > 后端开发 > php教程 > 在 PHP 中调整 PNG 大小时如何保持透明度?

在 PHP 中调整 PNG 大小时如何保持透明度?

Barbara Streisand
发布: 2024-11-28 14:20:16
原创
619 人浏览过

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):在分配透明颜色之前禁用 alpha 混合以防止不必要的
  • imagesavealpha(true):在图像复制之前启用透明背景保存。
  • imagefilledrectangle():用透明的color.

更新:

提供的代码处理不透明度设置为 0 的透明背景。但是,对于不透明度值在 0 到 100 之间的图像,它仍然会产生黑色背景。不幸的是,GD 库中没有直接的解决方案来处理这个用例。

以上是在 PHP 中调整 PNG 大小时如何保持透明度?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板