使用PHP imageftbbox-将图像大小调整为字体大小输出?

丹尼·谢泼德

我正在使用PHP imageftbbox创建一些日期,这些日期被计算并呈现为图像。

它们当前渲染到图像块,因此我的字体大小与创建更高分辨率的结果基本无关。我遇到的问题是,例如,如果我有一个结果提供两个不同的日期(例如2月和3月),则字体大小在我的结果页面中会出现不同的显示,因为很明显它正在扩展3月日期以填充该框。

我如何才能将大小调整应用于实际喷出的字体大小-因此,例如,无论所创建内容的长度如何,我都可以使用相同大小的字体输出?

    <?php
include 'deliverytimes.php';

$date = new DateTime();
$now = date("Y-m-d H:i:s");
$h = date("H:i:s"); 

$days = explode(",", $businessDaysToAdd);
if (count($days) > 1) {
      
    $two_weekdays_later_1 = strtotime(date("Y-m-d H:i:s", strtotime($now)) . " +" . $days[0] . " weekdays $h");
    $date_1 = new DateTime("@$two_weekdays_later_1"); 
    $formattedDeliveryDate_1 =  $date_1->format('jS M');
    $formattedDeliveryDate_3 =  $date_1->format('jS \o\f F');
    
    $two_weekdays_later_2 = strtotime(date("Y-m-d H:i:s", strtotime($now)) . " +" . $days[1] . " weekdays $h");
    $date_2 = new DateTime("@$two_weekdays_later_2"); 
    $formattedDeliveryDate_2 =  $date_2->format('jS M.');
    $formattedDeliveryDate_4 =  $date_2->format('jS \o\f F');   

    $formattedDeliveryDate1 = $formattedDeliveryDate_3;
    $formattedDeliveryDate2 = $formattedDeliveryDate_4;

    $formattedDeliveryDate = "If ordered today we estimate delivery to be approximately between " . $formattedDeliveryDate_1 . " and " . $formattedDeliveryDate_2;
} else {
    $h = date("H:i:s");   
    $two_weekdays_later = strtotime(date("Y-m-d H:i:s", strtotime($now)) . " +" . $businessDaysToAdd . " weekdays $h");
    $date = new DateTime("@$two_weekdays_later"); 
    $formattedDeliveryDate = "If ordered today we estimate delivery approximately by " . $date->format('l, jS M.');
}

$defaultOutput = 'main';
$textMobile = isset($_REQUEST['mobile']) ? $_REQUEST['mobile'] : $defaultOutput;

switch($textMobile) {
    case "main":
        $textToUse = $formattedDeliveryDate;
        break;
    case "p1":
        $textToUse = $formattedDeliveryDate1;        
        break;
    case "p2":
        $textToUse = $formattedDeliveryDate2;        
        break;
}

// Path to our font file
$font = './Inter-SemiBold.ttf';
$fontBold = './Inter-Bold.ttf';
$size = 24;
$size2 = 82;
$spacing = 0;
$bbox   = imageftbbox($size2, 0, $fontBold, $textToUse);
$width  = $bbox[2] - $bbox[6];
$height = $bbox[3] - $bbox[7];
$im    = imagecreatetruecolor($width, $height);
$xcoord = ($width - $bbox[4]) / 2;
imagealphablending($im, false);
imagesavealpha($im, true);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
$grey = imagecolorallocate($im, 161, 161, 168);
$trans = imagecolorallocatealpha($im, 255, 255, 255, 127);
imagefilledrectangle($im, 0, 0, $width, $height, $trans);
//$red = imagecolorallocate($im, 239, 73, 52);

$defaultTextColour = 'white';
$textColour = isset($_REQUEST['colour']) ? $_REQUEST['colour'] : $defaultTextColour;

switch($textColour) {
    case "white":
        $textColourUse = $white;
        break;
    case "black":
        $textColourUse = $black;        
        break;
    case "grey":
        $textColourUse = $grey;        
        break;
}

// Write it
imagettftext($im, $size2, 0, -$bbox[6], -$bbox[7], $textColourUse, $fontBold, $textToUse);

// Output to browser
header('Content-Type: image/png');
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
imagepng($im);
imagedestroy($i'm);

我的CSS就是

.phpimage2 {max-width:90%; display: block; margin:10px auto 5px auto}
KIKO软件

从我的看到,给定您的代码,您将生成一张图像,其宽度取决于$textToUse变量。我尝试了您的代码,这就是我得到的(原始大小的一半):

在此处输入图片说明

我最好的猜测是您在另一个页面中使用了这些图像,在该页面中,固定了这些图像的显示宽度。由于March图像的宽度小于February图像的宽度,因此它将被拉伸到与February图像相同的宽度您在页面上看到的结果可能是这样的:

在此处输入图片说明

但是,这只是一个猜测,因为您问题中的代码不允许我们实际重现您的问题。另请参阅:如何创建最小的,可复制的示例

一个解决方案是什么?您可以使用CSS缩放图像transform: scale(0.5);,这将允许您将其缩小为固定的字体大小。这可能不适用于自适应页面,在该页面上边框的大小可能相差很大。这完全取决于图像在页面中的嵌入方式,您还没有告诉我们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将背景大小调整为使用画布,谷歌地图创建的标记上的字体大小?

来自分类Dev

iOS,使用带代码的大小调整类字体大小?

来自分类Dev

PHP imageftbbox imagettftext-简单的字母间距/字距?

来自分类Dev

在php中上传时将图像大小调整为相等的宽度和高度

来自分类Dev

在php中上传时将图像大小调整为相等的宽度和高度

来自分类Dev

使用ARM NEON将8位图像大小调整为4

来自分类Dev

使用Cookie调整字体大小

来自分类Dev

WPF将字体大小调整为窗口比例

来自分类Dev

如何根据屏幕大小调整php中的图像大小?

来自分类Dev

字体大小调整

来自分类Dev

使用JavaScript将元素的字体大小设置为另一个元素的字体大小的倍数

来自分类Dev

根据字体大小调整图像大小

来自分类Dev

在 PHP 中创建一个图像,将其自身大小调整为文本

来自分类Dev

在标题中插入图像并将其大小调整为字体大小

来自分类Dev

使用R中的geom_point将点大小调整为单个变量

来自分类Dev

使用CSS将GIF大小调整为浏览器窗口尺寸

来自分类Dev

在php csv输出中更改字体大小

来自分类Dev

使用自动页边距和字体大小调整在A5纸上打印A4文档

来自分类Dev

使用后置变换将字体大小设置为与Swing中的容器成比例

来自分类Dev

将根元素字体大小设置为百分比时,在Chrome中使用rem导致textarea的字体大小超出预期

来自分类Dev

Fabric js:使用鼠标调整大小时,增加字体大小,而不只是缩放

来自分类Dev

使用gd调整字体大小和填充大小以创建动态条形图

来自分类Dev

tableGrob:使用注解_custom调整在ggplot顶部绘制的表的大小(更改字体大小)

来自分类Dev

使用C#在datagridview中调整行标题的大小时,如何动态更改字体大小?

来自分类Dev

使用双三次锐化器将GD图像大小调整器转换为等效的ImageMagick

来自分类Dev

如何使用Jquery / javascript根据视图端口大小调整图像大小

来自分类Dev

PHP上载图片大小调整

来自分类Dev

将时间序列向量的长度设置为相等(使用线性插值对它们进行大小调整/缩放)

来自分类Dev

使用CSS将页面大小调整为450px时如何更改每行中的图片数量?

Related 相关文章

  1. 1

    如何将背景大小调整为使用画布,谷歌地图创建的标记上的字体大小?

  2. 2

    iOS,使用带代码的大小调整类字体大小?

  3. 3

    PHP imageftbbox imagettftext-简单的字母间距/字距?

  4. 4

    在php中上传时将图像大小调整为相等的宽度和高度

  5. 5

    在php中上传时将图像大小调整为相等的宽度和高度

  6. 6

    使用ARM NEON将8位图像大小调整为4

  7. 7

    使用Cookie调整字体大小

  8. 8

    WPF将字体大小调整为窗口比例

  9. 9

    如何根据屏幕大小调整php中的图像大小?

  10. 10

    字体大小调整

  11. 11

    使用JavaScript将元素的字体大小设置为另一个元素的字体大小的倍数

  12. 12

    根据字体大小调整图像大小

  13. 13

    在 PHP 中创建一个图像,将其自身大小调整为文本

  14. 14

    在标题中插入图像并将其大小调整为字体大小

  15. 15

    使用R中的geom_point将点大小调整为单个变量

  16. 16

    使用CSS将GIF大小调整为浏览器窗口尺寸

  17. 17

    在php csv输出中更改字体大小

  18. 18

    使用自动页边距和字体大小调整在A5纸上打印A4文档

  19. 19

    使用后置变换将字体大小设置为与Swing中的容器成比例

  20. 20

    将根元素字体大小设置为百分比时,在Chrome中使用rem导致textarea的字体大小超出预期

  21. 21

    Fabric js:使用鼠标调整大小时,增加字体大小,而不只是缩放

  22. 22

    使用gd调整字体大小和填充大小以创建动态条形图

  23. 23

    tableGrob:使用注解_custom调整在ggplot顶部绘制的表的大小(更改字体大小)

  24. 24

    使用C#在datagridview中调整行标题的大小时,如何动态更改字体大小?

  25. 25

    使用双三次锐化器将GD图像大小调整器转换为等效的ImageMagick

  26. 26

    如何使用Jquery / javascript根据视图端口大小调整图像大小

  27. 27

    PHP上载图片大小调整

  28. 28

    将时间序列向量的长度设置为相等(使用线性插值对它们进行大小调整/缩放)

  29. 29

    使用CSS将页面大小调整为450px时如何更改每行中的图片数量?

热门标签

归档