HaniBlindBox/server/php/app/common/server/autoload.php
2026-01-01 20:46:07 +08:00

53 lines
1.4 KiB
PHP

<?php
namespace app\common\server;
use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;
class autoload
{
public function generatePosterWithQR($backgroundUrl, $qrText)
{
// 加载背景图
$backgroundImage = imagecreatefromjpeg($backgroundUrl);
if (!$backgroundImage) {
return;
}
$backgroundWidth = imagesx($backgroundImage);
$backgroundHeight = imagesy($backgroundImage);
// 生成二维码
$qrSize = 850;
$qrCode = new QrCode($qrText);
$qrCode->setSize($qrSize);
$writer = new PngWriter();
$qrImage = $writer->write($qrCode);
// 将二维码转换为 GD 图像资源
$qrImageResource = imagecreatefromstring($qrImage->getString());
// 计算二维码的放置位置
$qrX = ($backgroundWidth - $qrSize) / 2;
$qrY = ($backgroundHeight - $qrSize) * 0.78;
// 将二维码绘制到背景图上
imagecopy($backgroundImage, $qrImageResource, $qrX, $qrY, 0, 0, $qrSize, $qrSize);
// 创建一个临时的内存文件,保存合成后的图片
ob_start();
imagepng($backgroundImage); // 输出图像为PNG格式
$imageData = ob_get_contents();
ob_end_clean();
// 释放图像资源
imagedestroy($backgroundImage);
imagedestroy($qrImageResource);
// 返回合成后的图片的字节数据
return $imageData;
}
}