false, 'error' => '内容不能为空']); exit; } ob_start(); QRcode::png($text, false, QR_ECLEVEL_H, 10, 2); $imageData = ob_get_contents(); ob_end_clean(); $base64 = 'data:image/png;base64,' . base64_encode($imageData); echo json_encode(['success' => true, 'image' => $base64]); exit; } if (isset($_POST['action']) && $_POST['action'] === 'generate_with_logo') { $text = $_POST['text'] ?? ''; if (empty($text)) { echo json_encode(['success' => false, 'error' => '内容不能为空']); exit; } if (!isset($_FILES['logo']) || $_FILES['logo']['error'] !== UPLOAD_ERR_OK) { echo json_encode(['success' => false, 'error' => '请上传Logo图片']); exit; } // 生成二维码 $tempFile = tempnam(sys_get_temp_dir(), 'qr'); QRcode::png($text, $tempFile, QR_ECLEVEL_H, 10, 2); // 处理Logo $logo = $_FILES['logo']['tmp_name']; $qrImage = imagecreatefrompng($tempFile); $logoInfo = getimagesize($logo); switch ($logoInfo[2]) { case IMAGETYPE_JPEG: $logoImage = imagecreatefromjpeg($logo); break; case IMAGETYPE_PNG: $logoImage = imagecreatefrompng($logo); break; case IMAGETYPE_GIF: $logoImage = imagecreatefromgif($logo); break; default: echo json_encode(['success' => false, 'error' => '不支持的图片格式']); exit; } // 调整Logo大小 $qrWidth = imagesx($qrImage); $qrHeight = imagesy($qrImage); $logoWidth = imagesx($logoImage); $logoHeight = imagesy($logoImage); $logoQrWidth = $qrWidth / 4; $logoQrHeight = $logoHeight * $logoQrWidth / $logoWidth; $logoResized = imagecreatetruecolor($logoQrWidth, $logoQrHeight); imagecopyresampled($logoResized, $logoImage, 0, 0, 0, 0, $logoQrWidth, $logoQrHeight, $logoWidth, $logoHeight); // 合并图片 $logoX = ($qrWidth - $logoQrWidth) / 2; $logoY = ($qrHeight - $logoQrHeight) / 2; imagecopy($qrImage, $logoResized, $logoX, $logoY, 0, 0, $logoQrWidth, $logoQrHeight); // 输出 ob_start(); imagepng($qrImage); $imageData = ob_get_contents(); ob_end_clean(); imagedestroy($qrImage); imagedestroy($logoImage); imagedestroy($logoResized); unlink($tempFile); $base64 = 'data:image/png;base64,' . base64_encode($imageData); echo json_encode(['success' => true, 'image' => $base64]); exit; } } ?>
支持文字、符号、数字及图片生成二维码
二维码将在这里显示