Imagick 字体属性问题

如何解决Imagick 字体属性问题

我正在尝试使用 Imagick annotateImage 在图像中渲染文本。我的文本可以是常规、粗体、斜体、下划线类型,我在以下示例代码中为其定义了标志。基于 PHP 手册,我尝试使用这些函数来设置文本属性。但是粗体和斜体似乎不起作用。仅当将字体设置为 :

时,我才会得到粗体文本
$txtfont ='ROBOTO-BOLD'; 

或者只有当我使用 :

时我才会得到斜体文本
$txtfont ='ROBOTO-ITALIC';

$draw->setFontWeight(800);和 $draw->setFontStyle(\Imagick::STYLE_ITALIC);在以下示例代码中似乎没有按预期工作。

下划线也是一条细线,有没有办法设置它的粗细?

我犯了什么错误在这方面的任何帮助将不胜感激。 在下面添加我的示例代码


/* Create some objects */      
$image = new Imagick();      
$image->setResolution(300,300);      
$draw = new ImagickDraw();      
$pixel = new ImagickPixel( 'gray' );      
$txtbold =0;      
$txtitalic = 1;      
$txtunderline = 1;      

/* New image */      
$image->newImage(1000,100,$pixel);      

/* Black text */      
$draw->setFillColor('black');      

/* Font properties */      
$txtfont ='ROBOTO';      

try{      
    $draw->setFont($txtfont);      
    echo "font loaded";       
    
}      
catch(\Exception $e)      
{      
    echo "error loading font".$e;      
}      

$draw->setFontSize( 12 );      
$draw->setResolution(300,300);      


$draw->setTextAlignment (Imagick::ALIGN_CENTER);

if($txtbold) // if text is bold      
{      
    $draw->setFontWeight(800);      
    echo "text is bold";      
}      

if($txtitalic) // if text is italic      
{      
    $draw->setFontStyle(\Imagick::STYLE_ITALIC);      
    echo "text is italic";      
}      

if($txtunderline) // if text has underline      
{      
    $draw->setTextdecoration(2);      
    echo "text has underline";      
}      
                    
$text = 'The quick brown fox jumps over the lazy ';      
$metrics = $image->queryFontMetrics ($draw,$text);      

$xpos = ($image->width - $metrics['textWidth'])/2;      
$ypos = ($image->height - $metrics['textHeight'])/2 + $metrics['ascender'];      

/* Create text */      
$image->annotateImage($draw,$xpos,$ypos,$text);      

/* Give image a format */      
$image->setimageFormat('jpeg');      

// SAVE FINAL page image      
    file_put_contents ("./testplaintext.jpg",$image);      

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?