【问题标题】:How do I create a QR code in Python without saving it as an image如何在 Python 中创建二维码而不将其保存为图像
【发布时间】:2021-12-14 07:53:31
【问题描述】:

我正在尝试使用此代码在 Django 应用程序上使用 Python 制作二维码:

def generate_qr_code (reference):
    qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4,
    )
    qr.add_data(reference)
    qr.make(fit=True)
    img = qr.make_image(fill_color="black", back_color="white").convert('RGB')
    filename = reference+".jpeg"
    img.save("C:\\qrs\\"+filename)

现在,当我单击“生成二维码”按钮时会调用此函数。我的问题是我希望将二维码显示在浏览器的新选项卡上,而不是将其保存为图像,因为那时我只需要将它们打印在纸上,而无需保留图像.

感谢您的帮助。

【问题讨论】:

  • 我删除了“postgresql”标签,因为它显然与这里无关。这是一个简单的“网络应用”问题。
  • 不要以为您不必将其保存为图像,只需在浏览器中打开图像后将其删除即可:stackoverflow.com/questions/3744573/…
  • 这取决于你想如何使用它。您可能可以修改保存位置和加载图像的位置以接受字节,但您必须在这两个地方都这样做
  • @Mandera 不正确,应该很有可能将图像保存到内存并从那里使用它

标签: python django qr-code django-apps


【解决方案1】:

将图像转换为base64并在您的html中显示like this

import base64
b64 = base64.b64encode(image).decode("utf-8")

更新:

您不需要将图像保存为 png 即可使用此功能,您可以更改 html 格式,也可以更改图像格式而不将其保存到文件like this

【讨论】:

  • 是的,但是从答案来看它自己假设您的图像以PNG格式存储,这是非常流行的作者不想这样做。
  • @GaëtanGR 它可以更改为答案中提到的其他格式。另外,为了创建图像编码,您不必实际保存图像,您可以使用 opencv 来完成。
  • 是的,它可以更改为其他格式,但标题显示不将其保存为图像,除非我误解了您的回答,否则将保存图像以供您的解决方案使用
  • @GaëtanGR 再次,您无需保存图像即可获得 png 格式,请查看我的更新答案。
  • 正确!我误解了答案,感谢您的澄清。
【解决方案2】:

毕竟,我设法通过在我的 HTML 中使用这个简单的行来做到这一点:

<img id='barcode' src="https://api.qrserver.com/v1/create-qr-code/?data={{ref}}" alt="" title="{{ref}}" width="150" height="150"/>

【讨论】:

    【解决方案3】:

    您可以使用 SVG 格式 导入二维码 导入 qrcode.image.svg 从 io 导入 BytesIO

    def generate_qr_code (reference):
      factory = qrcode.image.svg.SvgImage
      qr_string = "sample text"
      img = qrcode.make(qr_string, image_factory=factory, box_size=10)
      stream = BytesIO()
      img.save(stream)
      
      context = {
       'qrcode': stream.getvalue().decode()
      }
    
      return render(request, 'YOUR HTML.html', context)
    

    然后就可以在html文件中使用了:

    {{qrcode|safe}}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 2020-11-01
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多