Imagick 3.7.0版本annotateImage方法文本每3字符添加异常咨询
Imagick 3.7.0 annotateImage 文本渲染异常:仅间隔3个字符显示内容
问题背景
更新Imagick模块至3.7.0版本后,原正常运行的PHP图片文本渲染代码出现异常:annotateImage方法无法完整渲染指定文本,仅每隔3个字符显示一个内容。
当前环境
- Imagick 扩展版本:3.7.0
- PHP 版本:7.4
- ImageMagick 核心版本:6.9.12-73
原可正常运行代码
$image = new Imagick(); $draw = new ImagickDraw(); $pixel = new ImagickPixel('gray'); $image->newImage(800, 75, $pixel); $draw->setFillColor('black'); $draw->setFont('./LINESeedJP_A_OTF_Rg.otf'); $draw->setFontSize(30); $image->annotateImage($draw, 10, 45, 0, 'The quick brown fox jumps over the lazy dog'); $image->setImageFormat('png'); $image->writeImage('./a.png');
异常表现
生成的图片中,目标文本仅零散显示部分字符,呈现每隔3个字符才渲染的异常状态。
排查与解决方向
- 更换字体文件测试:部分OTF字体与Imagick 3.7.0存在兼容性问题,可尝试改用其他字体(如系统默认字体)验证
- 降级Imagick扩展:回退到之前能正常运行的版本(如3.6.x系列),确认是否为新版本的bug
- 检查字体加载状态:使用
Imagick::queryFonts()方法,确认目标字体是否被Imagick正确识别 - 升级ImageMagick核心版本:尝试将ImageMagick升级至更高稳定版本,修复可能的底层兼容性问题
内容的提问来源于stack exchange,提问作者re1
相关产品推荐
相关产品推荐

