我有这个图像,我想放置右对齐文本,但文本形成如下:
目前,我设法进行了两次text
次调用,但是当值长度发生变化时,两个tex重叠。
有没有办法告诉干预/图像改变字体&大小的中间短语?或者我的方法是坏的?
编辑#1:
我目前的代码:
<?php
/**
* StackOverflow test
*
* @param int $int
* @return Intervention\Image
*/
public function stackOverflow($int)
{
$img = Image::canvas(200, 50, '#FF0000');
$img->text('Label', 130, 30, function ($font) {
$font->file(resource_path('assets/fonts/futura-medium.ttf'));
$font->size(18);
});
$img->text($int, 190, 30, function ($font) {
$font->file(resource_path('assets/fonts/futura-medium.ttf'));
$font->size(30);
$font->align('right');
});
return $img->response('png');
}
$ int参数为10,显示正确:
当$ int参数超过99时,该数字与标签重叠:
当$ int参数低于10时,标签离它的值太远了:
我想找到一种方法将标签保持在整数值的相同距离(也许通过知道显示后的整数宽度?)
编辑#2
检查字符串长度是一种解决方法,但是当我使用非固定宽度字体时,结果仍然不一致:
答案 0 :(得分:0)
干预图片文字有回调功能,可让您进行一些微调,以便用于标签:
$img->text('The label', 20, 50);
此方法可以回调您的值,也可以使用此方法:
$img->text('Te value', 0, 0, function($font) {
$font->file('fonts/fontawesome-webfont.ttf');
$font->size(24);
$font->color('#fdf6e3');
$font->align('center'); //left, right or center.
$font->valign('top'); //top, bottom or middle.
$font->angle(45);
});
您可以使用所有选项,也可以只使用您需要的选项。
通过这种方式,您可以在定位文本时获得更多控制权。
我希望这会帮助你。我正在使用这种方法干预codeigniter
编辑:关注您发布的评论和其他信息。
检查值的长度并将其分配给变量:
请注意,我只添加了一些虚构的位置值。
if(strlen($int) == 1){
$pos = 195; // this is the position of your label you need to adjust it
}elseif(strlen($int) == 2){
$pos = 190; //pos label you need to adjust it
}elseif(strlen($int) == 3){
$pos = 185; //pos label you need to adjust it
}
将变量传递给标签$ img-&gt; text();
$img->text('The label', $pos, 30, function($font) {
标签将根据您的价值长度动态定位。