生成图像上的单色
Posted
技术标签:
【中文标题】生成图像上的单色【英文标题】:Single color on generated image 【发布时间】:2012-10-26 13:01:48 【问题描述】:我的脚本将多张图像粘合到一个图像中,但结果图像在胶合图像集中的第一张图像上以单一颜色为主:
但输入的 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;
另一个例子(如果胶水组的第一张图片是蓝色和其他不同的颜色):
【问题讨论】:
我不确定我是否理解。你能举个例子吗? 查看描述实际和预期结果的代码和图像会很有帮助。 添加了结果示例。我已经粘贴了 4 张不同颜色的图像,但所有图像都以黄色作为第一个源图像(它也是黄色的) 是否可以看到与此问题相关的源部分?否则几乎不可能给出准确甚至有用的答案。 【参考方案1】:您可能正在混合调色板图像,因此调色板将从第一个目标图像中获取。
通过创建合适大小的真彩色图像将它们转换为真彩色,然后将所有图像复制到该图像中。
之后,您可以尝试再次将目标图像缩小到调色板,即使这可能会产生略微“偏”的颜色。
$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);
【讨论】:
以上是关于生成图像上的单色的主要内容,如果未能解决你的问题,请参考以下文章