对于某些8位图像,imagecolorallocate()对于大多数颜色返回false

时间:2019-07-04 14:55:52

标签: php gd

我需要文本颜色的“颜色标识符”,我需要使用imagettftext()将其粘贴到图像上。我发现对于某些图像imagecolorallocate可以返回false。但是没有任何地方说明为什么会这样或哪种颜色会导致这种情况。 8位是一个很好的指标,但我不能更改为更高的位值。

经过反复试验,我发现一个有效的数字,并给出了我想要的颜色(0-255之间)。这并不是一个切实可行的解决方案,因为每当我更改图像时,我都将不得不再次寻找一个有效的数字。

$main_text_font_color = imagecolorallocate($certificate,
        $font_color['red'],
        $font_color['green'],
        $font_color['blue']
);
imagettftext($certificate, $text_size, 0, $text_h, $text_start, $main_text_font_color, $font_url, $text);

所以我想知道是否有一种方法可以预测哪些颜色会导致假色,哪些颜色会起作用。

更新: 因此,我没有找到问题的答案,但是感谢@misorude,我关注了imagecolloralocate documentation page的第一条评论,并使用了评论中提到的解决方法。 imagecolorclosest()非常适合我要寻找的颜色。 jahservant13的评论还提供了有关文档中未提及的imagecolloralocate的一些很好的背景信息。

因为颜色不是完美的要求,所以本质上这就是我想要的答案。我没有将其发布为答案,因为它实际上不是问题的答案,并且我仍然想知道是否有实际答案。

0 个答案:

没有答案