如何在PHP生成的图像中使用天气图标Web字体?

时间:2016-04-25 14:12:12

标签: php fonts

我想在动态生成的PHP图像中使用these icons,以便人们可以在他们的网页上嵌入天气。

现在我正在使用met.no的天气服务,它提供了一个名为“symbol”的整洁属性,是一个整数。 1 = Sunny,2 = Cloudy等。天气图标repo上的Pull Request包含了很好的met.no映射,因为我可以调用echo "<i class='wi wi-yrno-$symbol'></i>";并始终获得正确的图标。

但我不知道如何使用PHP的图像创建功能来做到这一点。在Javascript中,您可以执行此操作:Programmatically get FontAwesome unicode value by name,但我如何在PHP中执行此操作?我想我需要制作一个array("wi-yrno-1 => "(unicode escape code here)", "wi-yrno-2" => "(another escape code here) ...的数组,但我想知道是否有更好的方法。

1 个答案:

答案 0 :(得分:0)

我假设您在服务器上生成图像,然后将该内容发送到浏览器。

您提供的JavaScript示例无关紧要。主要是因为字体已加载并映射到类名。在PHP中,您必须重新创建此映射。将符号简单映射到十进制值将起作用。 E.g。

$symbols = [0 => '&#xf00d;', 1 => ..., 2 => ..., ...];

设置映射后,您需要使用正在使用的字体文件的绝对路径。在您知道使用imagettftext使用给定的ttf字体文件在图像上绘制文本之后。它必须是ttf字体文件(因此是函数的名称)。

// the symbol response from the met.no request
$symbolIntFromApi = 0;

// the mapping for the decimal characters
$symbols = [0 => '&#xf00d;'];

// create the image
$image = imagecreatetruecolor(1000, 1000);

// set background color to white
imagefill($image, 0, 0, imagecolorallocate($image, 255, 255, 255));

// write the text using the given font
imagettftext($image, 12, 0, 20, 20, 0, realpath('./font/weathericons-regular-webfont.ttf'), $symbols[$symbol]);

// save the image
imagepng($image, 'test.png');