PHP Conference Japan 2024

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
19 年前
实际上它并没有完全“复制”调色板。它将颜色从源调色板复制到目标图像。您最终在目标图像中获得的调色板将是“相同颜色但顺序不同”。如果您想要完全相同的调色板副本(以牺牲图像混乱为代价,如果您不小心的话),那么请使用此代码
<?
// 这是 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]); // 将索引 'c' 处的颜色设置为 $dst_image 中的 $col
}
}

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