1

我有一个简单的 PHP 脚本,它采用基本图像在顶部添加一些文本并将结果传递给浏览器。

问题是文本在不同浏览器上的大小不同。我终其一生都无法理解为什么。不是所有东西都是在服务器端组装的,因此看起来应该总是一样的吗?

这是整个脚本:

<?php

$ext = $source_type = end(explode('.', $_REQUEST['base_image']));
if( $source_type == 'jpg' ) $source_type = 'jpeg';
$read = "imagecreatefrom$source_type";
$output = "image$source_type";
list($x, $y) = explode('x', $_REQUEST['position']);
list($r, $g, $b) = explode(',', $_REQUEST['color']);

$size = $_REQUEST['size'];
$text = $_REQUEST['text'];
$font = realpath($_REQUEST['font']);
$image = $read($_REQUEST['base_image']);
list($llx, $lly, $lrx, $lry, $urx, $ury, $ulx, $uly) = imageftbbox($size, 0, $font, $text);
$offset = ($lrx - $llx) / 2;
$color = imagecolorallocate($image, $r, $g, $b);
imagefttext($image, $size, 0, $x-$offset, $y, $color, $font, $text);
header("Content-Type: image/$source_type");
header("Content-Disposition: attachment; filename=\"wolfpackbadge.$ext\"");
$output($image);

我家里有一台电脑,它显示的文本很小。我也收到过其他人的超大文本报告。以下是图像外观的示例:

它应该是什么样子

这是在我家的一台计算机上显示时的屏幕截图:

太小了

这是它如何查找向我报告的另一个用户的屏幕截图:

太大

还有一些信息:

  • 在 IE 中查看时,我家的电脑看起来不错。只有在 Windows Chrome 上它看起来很奇怪。但是我家的另一台 Windows 机器在 Chrome 中正常显示。
  • 我从其他人那里得到的报告也表明存在问题的浏览器包括 Chrome、Android 和 iOS。

我的问题是:

  • 如果图像是在服务器端生成的,那么字体如何因浏览器而异?
  • 我可以对脚本进行哪些更改以消除此问题?

我尝试过的几件事。

  • 我尝试将字体从 otf 转换为 ttf 以确保字体类型没有问题。
  • 我尝试将源图像和输出图像更改为 jpeg 以外的其他图像
4

0 回答 0