【问题标题】:Php GD add text to png image always follow image background colorPhp GD 将文本添加到 png 图像始终遵循图像背景颜色
【发布时间】:2014-10-17 01:28:11
【问题描述】:

当使用 gd 库向 png 图像添加文本时,即使我使用 imagecolorallocate() 设置了颜色,文本也始终遵循图像背景颜色,这是为什么呢?

这是我的代码:

<?php
header ('Content-Type: image/png');

$im = imagecreatefrompng('picture.png');

$text_color = imagecolorallocate($im, 233, 14, 91);
$text = 'A Simple Text String';
$font_path = './font/arial.ttf';

imagettftext($im, 16, 0, 100, 200, $text_color, $font_path, $text);

imagepng($im);
imagedestroy($im);
?>

【问题讨论】:

  • 我认为我的代码没有问题,但是图像本身。我尝试其他图像,它完美无缺。有谁知道我创建png图像时为什么会出现问题?我需要一些意见和建议。谢谢。
  • 您能否将问题 PNG 添加到您的问题中?我已按原样运行您的代码,最终以代码中指定的颜色绘制文本。
  • @timclutton 你的意思是这个->“Php GD 将文本添加到 png 图像始终遵循图像背景颜色”?我认为PNG已经在问题中。是的,我刚刚尝试过使用其他 png 图像,效果很好。但不知道为什么我自己创建的图像会导致这个问题。可能是我以错误的方式创建了 png 图像。 T.T
  • 我的意思是,您能否上传您遇到问题的图像并将其嵌入到您的问题中,以便我们对其进行测试。我可以用我的测试图像完美地运行代码,你说它适用于其他图像。所以一定是那个确切的图像文件有问题。
  • 图片是索引色,而调色板中没有这个背景色会不会有问题?

标签: php image png gd


【解决方案1】:

如果您正在加载 8 位 PNG 文件,很可能调色板中的所有 256 个条目都已分配。您对 imagecolorallocate() 的调用将返回 false。它被转换为 0,这大概是背景颜色的索引。

你应该做的是调用 imagecolorstotal() 来查看它是否小于 256。如果调色板已满,请在继续之前将图像转换为真彩色。

【讨论】:

  • 是的,非常感谢。你解决了我的问题。如果我创建一个更大的PNG,它还会有这个问题吗?
猜你喜欢
  • 2010-12-02
  • 1970-01-01
  • 2018-06-10
  • 2014-01-10
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 2019-01-05
相关资源
最近更新 更多