【php】PHP的gd库拼接jpg与png图片的时候出现颜色泛黄

【php】PHP的gd库拼接jpg与png图片的时候出现颜色泛黄

如图所示,我写了一个脚本抓取贴吧用户头像拼接成照片墙,贴吧头像有的是jpg,有的是png。

        list($intWidth, $intHeight, $type, $attr) = getimagesize($strImagePath);

echo "getimagesize($strImagePath) : $intWidth, $intHeight, $type, $attr \n";

$resSourceImage = null;

switch ($type) {

case IMAGETYPE_JPEG:

$resSourceImage = imagecreatefromjpeg($strImagePath);

break;

case IMAGETYPE_PNG:

$resSourceImage = imagecreatefrompng($strImagePath);

break;

case IMAGETYPE_GIF:

$resSourceImage = imagecreatefromgif($strImagePath);

break;

default:

echo "unknown type: {$type} \n";

}

我使用如上代码进行创建画布然后使用imagecopy进行合并之后,就出现了如图所示的情况,图片颜色泛黄,这是怎么回事呢?有什么解决方法嘛?

回答

不同版本的 GD,可能出现不同的效果。这是毋庸置疑的

通常要
imagecopyresized 与 imagecreate
imagecopyresampled 与 imagecreatetruecolor
搭配使用

gd2 中应首选后者

哦 在Php手册中查到一段(imagecopyresized 或 imagecopyresampled 下都有)

Note: 因为调色板图像限制(255+1 种颜色)有个问题。重采样或过滤图像通常需要多于 255 种颜色,计算新的被重采样的像素及其颜色时采用了一种近似值。对调色板图像尝试分配一个新颜色时,如果失败我们选择了计算结果最接近(理论上)的颜色。这并不总是视觉上最接近的颜色。这可能会产生怪异的结果,例如空白(或者视觉上是空白)的图像。要跳过这个问题,请使用真彩色图像作为目标图像,例如用 imagecreatetruecolor() 创建的。

而在imagecreatetruecolor下又查到
Note: 本函数不能用于 GIF 文件格式。

以上是 【php】PHP的gd库拼接jpg与png图片的时候出现颜色泛黄 的全部内容, 来源链接: utcz.com/a/106750.html

回到顶部