gpt4 book ai didi

php - Imagemagick 不显示文本但也不抛出任何错误

转载 作者:搜寻专家 更新时间:2023-10-31 21:43:45 25 4
gpt4 key购买 nike

我正在使用 ImageMagick 为我们系统中的产品生成一些产品徽章。产品徽章像SO flair ,只是一些合成图像和一些文本。该脚本没有任何问题,因为它在我运行 Windows 的开发机器上运行良好。但是,在我的生产系统 (CentOS 5.1) 上,它会呈现除文本以外的所有内容。

我认为这是一个字体问题,但即使我将字体文件复制到 PHP 文件位置它也不起作用,当我给它一个完整路径时它也不起作用。

当我为 Linux 安装 Windows 字体时它不起作用 described here .

我输入了convert -list font,它显示了 Imagick 知道的字体列表(部分列表如下所示)

  Font: Times-BoldItalic
family: Times
style: Italic
stretch: Normal
weight: 700
glyphs: /usr/share/fonts/default/Type1/n021024l.pfb
Font: Times-Italic
family: Times
style: Italic
stretch: Normal
weight: 400
glyphs: /usr/share/fonts/default/Type1/n021023l.pfb
Font: Times-Roman
family: Times
style: Normal
stretch: Normal
weight: 400
glyphs: /usr/share/fonts/default/Type1/n021003l.pfb

我尝试给出此处列出的绝对路径,但没有成功。我也试过只使用这个名字,但仍然没有。

基本上图像出现了,但它的文本部分根本没有出现,也没有抛出任何错误(见下图)。

代码没有任何问题,Windows 和 CentOS 都在运行接近版本的 Imagick(6.7.1-4 和 6.7.1-3)。唯一的问题可能是字体,我只是把普通的 TTF 字体放在一起测试,我需要某种特殊的字体才能让它工作吗?

工作

Working Image

坏了

Broken Image

编辑 - 忽略 QR 码和评级中的差异。这是因为工作徽章和非工作徽章位于两个不同的服务器上。

UPDATE 1 - 我已经运行了一个简单的测试脚本,但即使这样也不起作用。这是我作为测试运行的:http://us2.php.net/manual/en/function.imagick-annotateimage.php字体不会显示,也不会引发任何错误。

我也从CentOS系统上复制了一个字体,在Windows box上试了一下,可以正常使用。字体似乎根本无法在 CentOS 上运行。

我也尝试过不设置字体,我假设 Imagick 会选择默认字体或其他字体,然后再次在 Windows 上运行,但在 CentOS 上不行。我将在不同的 *nix 版本上尝试这个,看看会发生什么。将更新调查结果。

更新 3:我认为我已将问题缩小为 FreeType 库的问题。论坛上说需要安装 FreeType 才能正确显示文本。当我查看 config.log 时,它告诉我安装 FreeType 时出现问题。任何对此的提醒将不胜感激,同时我将重新安装 Freetype 并再次运行安装。

最佳答案

您不能只安装 Freetype。实际上,您必须在服务器上安装 Freetype,然后使用 --with-freetype-dir=/usr/local 选项重新编译 ImageMagick。/usr/local 是您的 Freetype 安装路径。

我相信它通常是/usr/local/bin

试一试,让我们知道会发生什么;)

关于php - Imagemagick 不显示文本但也不抛出任何错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7078259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com