pay_time); $date = $carbon->isoFormat('YYYY年MM月DD日'); $position = OrderService::orderPositionInDate($order); $certNo = $carbon->isoFormat('YYYYMMDD') . sprintf('%04d', $position); return self::cert($order->user_name, $order->money, $date, $certNo); } public static function cert($name, $money, $date, $certNo) { // 创建一张新的图片 $image = imagecreatefromjpeg('image.jpg'); // 设置文字颜色和字体大小 $gray = imagecolorallocate($image, 102, 102, 102); $black = imagecolorallocate($image, 46, 46, 46); $green = imagecolorallocate($image, 7, 193, 96); $font = 'PingFang.ttf'; $semibold = 'PingFangSemiBold.ttf'; // 姓名 $x = 90; // 文本在图片中的x坐标 $y = 550; // 文本在图片中的y坐标 imagettftext($image, 36, 0, $x, $y, $black, $semibold, $name); // 谢谢你 $thx = '谢谢你:'; $x = $x + 12 + strlen($name) * 15; imagettftext($image, 18, 0, $x, $y, $gray, $font, $thx); // 感谢语金额 $suffix = 2; if ($money >= 10 * 10000 && $money < 100 * 10000) { $suffix = 1; } elseif ($money >= 100 * 10000) { $suffix = 0; } $money = number_format($money, $suffix, '.', ''); $x = 265; $y = 625; imagettftext($image, 28, 0, $x, $y, $green, $semibold, $money); // 下方列表 $formX = 258; $formY = 870; $gap = 86; //中间间隔 // 证书编号 imagettftext($image, 24, 0, $formX, $formY, $black, $font, $certNo); // 捐赠金额 $formY += $gap; imagettftext($image, 28, 0, $formX, $formY, $green, $semibold, $money); // 发放时间 $formY += $gap; imagettftext($image, 24, 0, $formX, $formY, $black, $font, $date); // 输出图片 $name = md5(strtotime('now') . random_int(100000, 999999)) . '.png'; $dir = public_path() . "storage/"; if (!file_exists($dir)) { mkdir($dir, 0777, true); } $path = $dir . $name; imagepng($image, $path); $url = self::get_domain() . dirname($_SERVER['SCRIPT_NAME']) . '/' . $name; $url = str_replace('\\', '/', $url); $url = str_replace('public', 'public/storage', $url); // 释放内存 imagedestroy($image); return ['url' => $url]; } /** * 获取当前网站的域名地址 * * @return string 域名地址 */ protected static function get_domain() { $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://'; return $sys_protocal . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''); } }