gpt4 book ai didi

imagemagick - 使用 ImageMagick 生成 "text"图像的正确语法

转载 作者:行者123 更新时间:2023-12-04 16:08:37 25 4
gpt4 key购买 nike

我正在尝试使用 ImageMagick 生成测试图像。图像只需要包含文本。直白使用example on the IM site不起作用:

convert -background lightblue -fill blue -font Roboto -pointsize 72 label:Anthony label.gif

产量:
convert.im6: unable to read font `Roboto' @ warning/annotate.c/RenderType/853.
convert.im6: no images defined `label.gif' @ error/convert.c/ConvertImageCommand/3044.

所以 1) 需要什么才能使用字体名称(我的整个桌面都使用 Roboto,所以我假设它安装正确,其他字体名称也不起作用)和 2)如果我删除字体规范,我仍然得到第二行,没有输出。

我错过了什么吗?

使用 ImageMagick 6.7.7-10 2016-11-29 Q16在 Ubuntu 14.04 上。

最佳答案

这是您正在使用的特定版本的 ImageMagick 中的一个错误,由错误修复补丁的错误向后移植导致。

有问题的补丁是 Debian 补丁 0161-Do-not-ignore-SetImageBias-bias-value .我不知道这是否包含在 2016 年 11 月 14 日的安全更新 8:6.7.7.10-6ubuntu3.2 中。或 2016 年 11 月 29 日的安全补丁 8:6.7.7.10-6ubuntu3.3 (或者,至少,我没有费心去弄清楚它,因为它不是那么重要。)该补丁是作为 this security patch 的反向移植而创建的。 ,但因为文件coders/label.c中的逻辑重组,更正最终被插入到错误的位置。

本质上就是label.c的逻辑如下:

  • 如果未指定图像的大小或点大小,则计算出最佳拟合
  • 如果未指定图像的宽度,则从计算出的宽度
  • 复制它
  • 如果未指定图像的高度,则从计算高度复制它
  • 如果未指定图像的点大小,则从计算出的点大小中复制
  • 对图像参数进行一些其他相关设置
  • 将文本渲染到图像中。

  • 如果无法使用生成的图像大小,则安全补丁旨在避免步骤 6。这可以避免在 Web 后端(这很常见)上使用 ImageMagick 时可能发生的拒绝服务攻击。它补充说:

    3a.如果图像尺寸不可用,立即失败。

    不幸的是,在应用补丁的版本中,上述步骤的顺序不同,第三步与步骤 5 混合在一起。(据我所知,这没有真正的区别,但有点杂乱无章,这可能是它随后被修复的原因。)结果是在从计算的高度复制图像高度之前插入了添加的步骤 3a。如果图像最初没有高度,即使在该点计算了正确的高度,这也会导致检查失败。

    说明清楚地表明 label:源不需要 -size (或 -pointsize)参数。但是对于错位的补丁,结果证明这是不正确的;除非在几何体中指定了高度,否则不会生成标签。

    我还没有为此生成错误报告,因为它仅适用于过时版本的 Ubuntu(可能还有 Debian)上的过时版本的 ImageMagic。碰巧我和 OP 都在某台机器上使用这个过时的 Ubuntu 版本,我对我们俩的建议是升级。但万一其他人有这个问题,我正在回答这个问题(我在我的机器上研究相同的问题时发现的。)

    关于imagemagick - 使用 ImageMagick 生成 "text"图像的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41209277/

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