【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