使用 Ubuntu 服务器的用户请注意,此函数是在 PHP 的 GD 库分支中添加的,默认情况下在 Ubuntu php5-gd 包中不可用。
以下是安装 PHP GD 版本的方法:http://preview.tinyurl.com/yel4r7t
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
imagecolormatch — 使调色板版本的图像颜色更接近真彩色版本
image1
一个真彩色图像对象。
image2
指向一个与 image1
大小相同的图像的调色板图像对象。
示例 #1 imagecolormatch() 示例
<?php
// 设置真彩色和调色板图像
$im1 = imagecreatefrompng('./gdlogo.png');
$im2 = imagecreate(imagesx($im1), imagesy($im1));
// 为 $im2 添加一些颜色
$colors = Array();
$colors[] = imagecolorallocate($im2, 255, 36, 74);
$colors[] = imagecolorallocate($im2, 40, 0, 240);
$colors[] = imagecolorallocate($im2, 82, 100, 255);
$colors[] = imagecolorallocate($im2, 84, 63, 44);
// 将这些颜色与真彩色图像匹配
imagecolormatch($im1, $im2);
// 从内存中释放
imagedestroy($im1);
imagedestroy($im2);
?>
使用 Ubuntu 服务器的用户请注意,此函数是在 PHP 的 GD 库分支中添加的,默认情况下在 Ubuntu php5-gd 包中不可用。
以下是安装 PHP GD 版本的方法:http://preview.tinyurl.com/yel4r7t
这个函数真是个救星!它完全按照文档中描述的那样工作。
我正在开发一个应用程序,需要将透明的 GIF 叠加在用户定义的背景色上,最后根据用户定义的百分比缩放 GIF。
我能够让它工作的唯一方法是将 GIF 转换为 JPG,然后将 JPG 复制到一个新的 GIF 图像中,如下所示
// 打开透明的 GIF
$GIFimg = imagecreatefromgif($file_path);
// 创建 JPG 图像
$JPGimg = imagecreatetruecolor($width, $height);
// 将 GIF 复制到 JPG
imagecopy($JPGimg, $GIFimg, 0, 0, 0, 0, $width, $height);
// 创建一个真彩色图像
$JPGscaled = imagecreatetruecolor($n_width, $n_height);
// 使用真彩色图像缩放新的 JPG
imagecopyresampled($JPGscaled, $JPGimg, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// 创建最终的 GIF 图像
$GIFfinal = imagecreate($n_width, $n_height);
// 将缩放后的 JPG 复制回 GIF
imagecopymerge($GIFfinal, $JPGscaled, 0, 0, 0, 0, $n_width, $n_height, 100);
这效果很好,除了最后一步,将 JPG 复制到 GIF。如果 JPG 有太多颜色,该函数将索引颜色以使其成为调色板图像。因此,最终图像中包含的将是错误的颜色。
在代码末尾添加这一行修复了所有问题。
imagecolormatch($JPGscaled, $GIFfinal);
希望这能帮助任何在图像之间转换并处理调色板问题和颜色校正的人。另外,请注意,以上代码只是示例,无法通过复制和粘贴来使用。