【问题标题】:php-QRcode generation failedphp-QRcode 生成失败
【发布时间】:2017-01-26 21:48:58
【问题描述】:

我正在使用PHP QR Code 库来生成二维码。

我包含了库,从数据库中获取用户信息后,我正在尝试创建 qrcode。然后将生成的二维码的路径返回给前端,这样我就可以把它传递给一个图片标签展示给用户了。

我正在从数据库中获取姓名、ID、电子邮件和用户图像路径。我想将用户图像包含到 qrcode 中,所以我获取内容并将其编码为字符串。

我没有收到错误。我检查了文件夹,没有保存二维码。

require_once 'externalLibraries/qrcode/qrlib.php';
 // how to build raw content - QRCode with Business Card (VCard) + photo         
 $tempDir = QRCODE_PATH; //saves temporary directory path

 // we building raw data 
 $codeContents  = 'BEGIN:VCARD'."\n"; 
 $codeContents .= 'FN:'.$name."\n"; 
 $codeContents .= 'ID:'.$id."\n"; 
 $codeContents .= 'EMAIL:'.$email."\n"; 
 $codeContents .= 'PHOTO;JPEG;ENCODING=BASE64:'.base64_encode(file_get_contents('../'.$userAvatar))."\n"; 
 $codeContents .= 'END:VCARD'; 

 // generating 
 QRcode::png($codeContents, $tempDir.$clientid.'.png', 4, 3); 

 // displaying 
 return QRCODE_PATH.$clientid.'.png'; 

这是生成二维码的方式吗?

【问题讨论】:

  • 你的图片尺寸是多少,你要把它退回到哪里?
  • 我将此返回给我的角度服务。图片是用户头像。我猜编码它会导致一个长字符串。 @RST
  • 还有其他方法可以在二维码中包含图像吗? @RST
  • 由于二维码可以处理的大小限制,您可以使用我在下面的答案中描述的方法(调整图像大小,链接到图像)。

标签: php qr-code


【解决方案1】:

您的代码对我有用。图像保存在指定位置。不过,我使用占位符作为您的变量。要显示图像,您可以使用:

$imgpath = QRCODE_PATH.$clientid.'.png';
$src = 'data: '.mime_content_type($imgpath).';base64,'.base64_encode(file_get_contents($imgpath));
echo '<img src="'.$src.'">';

更新:

正如 RST 在 cmets 中提到的以及在这些 answer 中所述,QR 码只能具有有限的大小。您使用的图像可能太大了。尝试在没有图像的情况下使用您的一代,看看它是否有效。要在评论中回答您的问题,您可以将图像重新调整为更小,但没有其他方法可以帮助您,因此 QR 码大小是有限的。也许您考虑将图像链接放入二维码中。

【讨论】:

  • 好的,让我试试这个。
  • 是的,文件是在磁盘上生成的。
猜你喜欢
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多