53 lines
1.4 KiB
PHP
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;
|
|
|
|
}
|
|
|
|
} |