首页 > 解决方案 > 证书生成器问题[字体加载问题]

问题描述

我正在尝试使用自定义字体制作证书生成器,但我无法从它的目录中导入字体。

代码如下

<?php
// (A) OPEN IMAGE
$img = imagecreatefromjpeg('cert.jpg');

// (B) WRITE TEXT
$white = imagecolorallocate($img, 255, 255, 255);
$txt = "Adnan Khan Akib";
$font = "arial.ttf"; 

$minus = strlen($txt)*70;

//1 word er jonno 70

// THE IMAGE SIZE
$width = imagesx($img)-$minus;
$height = imagesy($img);

// THE TEXT SIZE
$text_size = imagettfbbox(24, 0, $font, $txt);
$text_width = max([$text_size[2], $text_size[4]]) - min([$text_size[0], $text_size[6]]);
$text_height = max([$text_size[5], $text_size[7]]) - min([$text_size[1], $text_size[3]]);

// CENTERING THE TEXT BLOCK
$centerX = CEIL(($width - $text_width) / 2);
$centerX = $centerX<0 ? 0 : $centerX;
$centerY = CEIL(($height - $text_height) / 2);
$centerY = $centerY<0 ? 0 : $centerY;
imagettftext($img, 120, 0, $centerX, $centerY, $white, $font, $txt);

// (C) OUTPUT IMAGE
header('Content-type: image/jpeg');
imagejpeg($img);
imagedestroy($jpg_image);
?>

我已将 arial.ttf 放在同一目录中。

我试过了,

$font = "arial.ttf"; 

和,

$font = realpath("arial.ttf"); 

还有这个,

$font = "./arial.ttf"; 

错误是

Warning: imagettftext(): Could not find/open font 

标签: php

解决方案


这就是我所做的。

改变了这一行

$font = "arial.ttf"; 

$font = "./arial.ttf";

有效。

我刚才注意到你也试过了。您能否检查权限和字体文件的名称是否正确?

我浏览了日志,在最后一行发现了另一个错误

imagedestroy() expects parameter 1 to be resource, null given

改变这个

imagedestroy($jpg_image);

imagedestroy($img);

摆脱了错误。


推荐阅读