首页 > 解决方案 > 对于某个 8 位图像 imagecolorallocate() 对大多数颜色返回 false

问题描述

我需要文本颜色的“颜色标识符”,我需要使用 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 文档页面上的第一条评论,并使用了评论中提到的解决方法。imagecolorclosest()给出了我正在寻找的颜色的非常好的近似值。jahservant13 的评论还提供imagecolloralocate了文档中未提及的一些不错的背景信息。

由于完美的颜色不是必需的,这本质上是我正在寻找的答案。我没有将此作为答案发布,因为它实际上不是问题的答案,我仍然有兴趣知道是否有实际答案。

标签: phpgd

解决方案


推荐阅读