ImageMagick使用label命令生成1px高度图片,pointsize参数不生效如何解决?
问题原因
该问题由ImageMagick默认字体配置异常导致。未显式指定字体时,程序无法正常加载默认字体,也就不能按照pointsize参数的取值计算文字渲染需要的画布尺寸,最终出现渲染异常。指定-size参数时程序会强制按照设定的画布尺寸缩放适配文字,所以可以正常生成图片。
修复方案
临时使用方案
每次执行生成文字标签的命令时,显式添加-font参数指定可用字体即可,示例命令如下:
convert -pointsize 108 -font Liberation-Sans 'label:Some test label' label.png
你可以将Liberation-Sans替换为任意系统内可用的字体名称。
永久修复方案
无需每次执行命令都指定-font参数,按以下步骤操作即可:
- 执行命令查看当前系统中ImageMagick可识别的所有字体:
从输出结果中选定你要设置为默认的字体名称。convert -list font - 进入ImageMagick 6的配置文件目录,Ubuntu 21.10下默认路径为
/etc/ImageMagick-6/,编辑目录下的type.xml文件,找到默认字体配置项,将取值修改为你选定的字体名称。 - 如果执行
convert -list font无任何输出,说明系统缺少字体配置相关依赖,先安装依赖包再重建字体缓存即可:sudo apt install fontconfig fonts-liberation fc-cache -fv
配置完成后,即可直接使用-pointsize参数定义文字大小,无需额外指定-size或-font参数。
内容的提问来源于stack exchange,提问作者Konstantin Morenko
相关产品推荐
相关产品推荐

