我的脚本将多个图像粘合到一个图像中,但结果图像在胶合图像集的第一个图像上占主导地位:
但输入的4张图像有不同的颜色(黄色,绿色,蓝色,红色)。只有来自集合的第一张图片看起来是正确的。
$images = array();
foreach ($fileNames as $fileName) {
$image = imagecreatefrompng($path . $fileName);
if ($image) {
$images[] = $image;
}
}
// ...
$img = imagecreate($w, $h);
$x = 0;
foreach ($images as $image) {
$width = imagesx($image);
$height = imagesy($image);
imagecopy($img, $image, $x, 0, 0, 0, $width, $height);
$x += $width;
}
另一个例子(如果胶水套装的第一张图片是蓝色,其他图片是不同的颜色):
答案 0 :(得分:2)
您可能正在混合调色板图像,其中调色板将从第一个目标图像中获取。
通过创建合适大小的真彩色图像将它们转换为TrueColor,然后将所有图像复制到该图像中。
之后,您可以尝试将目标图像再次缩小为调色板,即使这可能会略微产生“关闭”颜色。
$img = imageCreateTrueColor($w, $h);
// Add transparency management if needed
$x = 0;
foreach ($images as $image) {
$width = imagesx($image);
$height = imagesy($image);
imagecopy($img, $image, $x, 0, 0, 0, $width, $height);
$x += $width;
}
// Reduce image to non-dithered, 256-color paletted if needed
// imageTrueColorToPalette($img, False, 256);