php - 证书生成器问题[字体加载问题]
问题描述
我正在尝试使用自定义字体制作证书生成器,但我无法从它的目录中导入字体。
代码如下
<?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
解决方案
这就是我所做的。
改变了这一行
$font = "arial.ttf";
至
$font = "./arial.ttf";
有效。
我刚才注意到你也试过了。您能否检查权限和字体文件的名称是否正确?
我浏览了日志,在最后一行发现了另一个错误
imagedestroy() expects parameter 1 to be resource, null given
改变这个
imagedestroy($jpg_image);
至
imagedestroy($img);
摆脱了错误。
推荐阅读
- c# - 类库中的 asp.net core ef dbcontext
- ruby - 从保留重音字符的字符串中删除非字母数字字符
- r - R Shiny CRUD 应用程序上的单选按钮问题
- python-3.x - Pandas 发送包含数据框的电子邮件作为可视化表格
- blockchain - Web3js 与没有元掩码的本地松露进行交互
- google-maps - 折线谷歌地图android中两条路径之间的航路点?
- javascript - service-worker.js中未添加的.html页面被缓存,可以离线使用?
- javascript - JSON 休息服务转 HTML 表格格式
- axon - 如何在微服务系统中使用 axon 和 Spring Cloud
- javascript - 基于先前值自动添加值的 JavaScript 循环