PHP. Imagecolorallocate 返回 false

3

我使用一些代码:

$colors = array ();
$colors['test'] = imagecolorallocate($img, 0 ,1 ,2);
....

当我更换图片时,它可以正常工作
但之后,imagecolorallocateimagecolorallocatealpha会返回false
$img 是正确的图片,比如 imagepng 可以正常输出

如何让 imagecolorallocate 正常工作?


2
你是否正在使用恒等运算符(===)检查false - Jon
我使用 var_dump($colors);die(); - RiaD
1
什么样的图像会导致imagecolorallocate失败?是8位图像吗? - Salman A
另外,“works until I change picture to other”是什么意思? - Jon
我对图像一无所知。这是错误的图片 - RiaD
适用于此图像 - RiaD
1个回答

1

对该函数的文档进行评论:

如果您遇到它无法分配所需颜色的情况,可能是由于图像颜色分配表。GIF和8位PNG图像非常容易出现这种情况。

如果您使用GIF和PNG,请尝试从表中删除一个颜色,这样应该可以重新分配另一个颜色。

如果源图像为索引图像(8位或更少),请确保有足够的空间来添加其他颜色。例如,8位图像可能没有使用调色板中的所有256种颜色,在这种情况下,该函数应该成功执行,否则将失败。

编辑

我查看了您的图像,实际上它是一个使用了所有256种颜色的8位PNG图像。尝试将其转换为真彩色图像(通过Photoshop或通过复制图像到使用“imagecreatetruecolor()”创建的GD图像),进行所有编辑,然后保存为GIF。


谢谢,我现在会尝试去做。 - RiaD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接