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.JdbcOdbc...