imagepalettecopy

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

imagepalettecopy将一个图像的调色板复制到另一个图像

描述

imagepalettecopy(GdImage $dst, GdImage $src): void

imagepalettecopy()src 图像的调色板复制到 dst 图像。

参数

dst

目标图像对象。

src

源图像对象。

返回值

不返回值。

变更日志

版本 描述
8.0.0 dstsrc 现在期望 GdImage 实例;以前,期望的是 resource

示例

示例 #1 imagepalettecopy() 示例

<?php
// 创建两个调色板图像
$palette1 = imagecreate(100, 100);
$palette2 = imagecreate(100, 100);

// 分配第一个调色板图像的背景为
// 绿色
$green = imagecolorallocate($palette1, 0, 255, 0);

// 将图像 1 的调色板复制到图像 2
imagepalettecopy($palette2, $palette1);

// 由于调色板现在已复制,因此我们可以使用分配给图像 1 的
// 绿色,而无需使用 imagecolorallocate() 两次
imagefilledrectangle($palette2, 0, 0, 99, 99, $green);

// 将图像输出到浏览器
header('Content-type: image/png');

imagepng($palette2);
imagedestroy($palette1);
imagedestroy($palette2);
?>

添加注释

用户贡献的注释 2 个注释

0
buzz at nospam dot oska dot com
18 年前
实际上它并没有完全“复制”调色板。它将源调色板中的颜色复制到目标图像。您最终在目标图像中得到的调色板将是“相同的颜色,不同的顺序”。如果您想要完全复制调色板(以牺牲可能弄乱您的图像为代价,如果您不小心的话),请使用以下代码
<?
// 这是 imagepalettecopy 的直接替代,除了它没有尝试修改任何
// 目标图像中的颜色,只是调色板。结果?如果您的调色板不太相似,图像看起来会完全不同,而且很可能很糟糕!
function imagepalettecopy_exact ( $dst_img, $src_img) {
for( $c = 0 ; $c < imagecolorstotal($src_img); $c++) {
$col = imagecolorsforindex($src_img,$c); // 获取颜色表中索引为 'c' 的颜色
imagecolorset($dst_img,$c,$col[red],$col[green],$col[blue]); // 将 $dst_image 中索引为 'c' 的颜色设置为 $col
}
}

?>
0
Los Olvidados
21 年前
确切地说,此函数会替换目标中的调色板。
To Top