php文字分两行,php – 在imagemagick中使用两行不同的字体

所以我想借鉴我的图像文字,在这个例子中说“Trevor,24”

但我想使用Helvetica字体为Trevor,而对于24我想使用字体Arial.但我希望它在同一条线上,看起来像是一条线.

是否有可能或者我将如何制作它以便即使我改变名称和年龄,我可以像这样打印出来?

“特雷弗,(Helvetica)24(阿里尔)”

我会假设将它们打印在彼此旁边,但是如果有人输入的名字比Trevor 24更长,那么就会过去.

我们的想法是让它在同一条线上

你们有什么感想?

$draw = new ImagickDraw();

$color = new ImagickPixel('#5b5b5b');

$bgcolor = new ImagickPixel('none');

$font = 'Helvetica';

//$draw->setFont($font);

//$draw->setFontSize(39);

$draw->setFillColor($color);

$draw->setStrokeAntialias(true);

$draw->setTextAntialias(true);

$draw->setFont($font);

$draw->setFontSize(39);

$text = 'Trevor, 24';

$draw->setGravity(Imagick::GRAVITY_WEST);

$image->annotateImage($draw, 50, 241, 0, $text);

解决方法:

这很容易,但你必须做一些工作.使用Imagick::queryFontMetrics跟踪每种字体的绘图宽度,并简单地偏移到X坐标以确保对齐均匀.

// Let's create a generator to simplify context management (YMMV)

function context_generator() {

$text = array('Trevor (Helventica)',' 24 (Impact)');

$font = array('Helvetica', 'Impact');

foreach($text as $k => $v ) yield [$font[$k], $v];

}

$image = new Imagick();

$image->newImage(450, 100, "steelblue", "png");

$draw = new ImagickDraw();

$draw->setFillColor('black');

$draw->setStrokeAntialias(true);

$draw->setTextAntialias(true);

$draw->setFontSize(24);

$x = $y = 40;

foreach(context_generator() as $attr) {

// Set context typeface

$draw->setFont($attr[0]);

// Calculate how big this type face will be (and any validation to protect overflow)

$metrics = $image->queryFontMetrics($draw, $attr[1], FALSE);

// Draw part

$image->annotateImage($draw, $x, $y, 0, $attr[1]);

// Offset origin X

$x += $metrics['textWidth'];

}

lKtgW.png

当然,上面的例子可以简化&降低.

标签:imagemagick-convert,imagick,php,imagemagick

来源: https://codeday.me/bug/20191007/1867027.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值