我想在动态生成的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) ...
的数组,但我想知道是否有更好的方法。
答案 0 :(得分:0)
我假设您在服务器上生成图像,然后将该内容发送到浏览器。
您提供的JavaScript示例无关紧要。主要是因为字体已加载并映射到类名。在PHP中,您必须重新创建此映射。将符号简单映射到十进制值将起作用。 E.g。
$symbols = [0 => '', 1 => ..., 2 => ..., ...];
设置映射后,您需要使用正在使用的字体文件的绝对路径。在您知道使用imagettftext
使用给定的ttf字体文件在图像上绘制文本之后。它必须是ttf字体文件(因此是函数的名称)。
// the symbol response from the met.no request
$symbolIntFromApi = 0;
// the mapping for the decimal characters
$symbols = [0 => ''];
// 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');