本文介绍如何将文字说明和二维码一起下载为png图片。使用qrcodejs2生成二维码,filesaver.js保存图片,但直接在二维码上添加文字可能导致遮挡或超出范围。解决方法是使用html2canvas插件,将二维码和文字说明组合后转换为图片再下载。
以下是一个PHP代码示例,展示如何生成二维码和文字说明,并最终使用html2canvas将其组合成一张图片下载:
PHP代码片段:
<title>工位信息填报</title><meta content="width=device-width, initial-scale=1.0" name="viewport"></meta><link href="../css/qrcode.css" rel="stylesheet"></link> <?php // 连接MySQL数据库 $con = mysqli_connect("localhost", "root", "zsc%1234", "textplain"); if (!$con) { echo "连接数据库失败"; } // 查询语句 $sql = "select * from station"; // 执行查询 $result = mysqli_query($con, $sql); // 获取结果 $employee_list = mysqli_fetch_all($result, MYSQLI_ASSOC); foreach ($employee_list as $employee) { // 构建二维码URL $qr_url = $employee['username'] && $employee['workorder'] ? "http://localhost/myweb/stationmanagementsystem/html/getinformation.php?stationum=" . urlencode($employee['stationum']) . "&bulid=" . urlencode($employee['bulid']) . "&floor=" . urlencode($employee['floor']) . "&username=" . urlencode($employee['username']) . "&workorder=" . urlencode($employee['workorder']) : "http://localhost/myweb/stationmanagementsystem/html/getinformation.php?stationum=" . urlencode($employee['stationum']) . "&bulid=" . urlencode($employee['bulid']) . "&floor=" . urlencode($employee['floor']); // 输出二维码容器及文字说明 echo '<div class="qrcode-container" style="position: relative; display: inline-block;">'; echo '<div id="qrcode-' . $employee['stationum'] . '"></div>'; echo '<div class="qrcode-label">' . $employee['stationum'] . '</div>'; echo '</div>'; // JavaScript代码 (需放在<script>标签内) echo "<script>"; echo "var size = 256; // 二维码大小"; echo "new QRCode('qrcode-" . $employee['stationum'] . "', {"; echo "text: '" . $qr_url . "',"; echo "width: size,"; echo "height: size,"; echo "colorDark : '#000000',"; echo "colorLight : '#ffffff',"; echo "correctLevel : QRCode.CorrectLevel.H"; echo "});"; echo "// 使用html2canvas生成图片"; echo "html2canvas(document.querySelector('.qrcode-container'), { useCORS: true, allowTaint: true }).then(function(canvas) {"; echo "canvas.toBlob(function(blob) { saveAs(blob, '" . $employee['stationum'] . ".png'); });"; echo "});"; echo "</script>"; } mysqli_close($con); ?>
关键改进:
前端代码 (需要包含qrcodejs2, filesaver.js, 和 html2canvas.js): 确保在你的HTML文件中包含这三个库文件。
此方法避免了直接在canvas上绘制文字可能造成的遮挡问题,通过html2canvas将完整的HTML元素转换为图片,确保文字和二维码都能完整显示在最终下载的PNG图片中。 记住要处理潜在的跨域问题,如果二维码指向的URL不在同一域名下,需要设置 useCORS: true 和 allowTaint: true (但这可能带来安全风险,需要谨慎使用)。
以上就是如何将文字说明和二维码一起作为PNG图片下载?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号