django 如何在Python中创建QR码而不将其保存为图像?

p4rjhz4m  于 2023-08-08  发布在  Go
关注(0)|答案(4)|浏览(104)

我正在尝试使用Python在Django应用程序上使用以下代码制作QR码:

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)

字符串
现在,当我点击“生成QR码”按钮时,这个函数被调用。我的问题是,我希望QR码显示在我的浏览器上的一个新选项卡上,而不是将其保存为图像,因为我只需要在那一刻将它们打印在纸上,我没有必要保留图像。
谢谢你的帮助。

p1iqtdky

p1iqtdky1#

转换图像为base64并显示在你的html like this

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

字符串

更新:

你不需要保存你的图像为png使用此功能,你可以改变格式在html中,你也可以改变图像格式,而不保存到文件like this

7vux5j2d

7vux5j2d2#

您可以使用SVG格式导入qrcode import qrcode.image.svg from io import 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}}

pod7payv

pod7payv3#

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

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

字符串

l2osamch

l2osamch4#

您可以通过点击Django模板中的链接在新标签页中创建并显示QR码,代码如下:

# "my_app1/views.py"

from django.shortcuts import render
import qrcode
from io import BytesIO
from base64 import b64encode

def index(request):
    return render(request, 'index.html') 

def generate_qr_code(request):
    qr_code_img = qrcode.make("https://www.google.com/")
    buffer = BytesIO()
    qr_code_img.save(buffer)
    buffer.seek(0)
    encoded_img = b64encode(buffer.read()).decode()
    qr_code_data = f'data:image/png;base64,{encoded_img}'
    return render(request, 'qr_code.html', {'qr_code_data': qr_code_data})
# "my_app1/urls.py"

from django.urls import path
from . import views

app_name = "my_app1"

urlpatterns = [
    path('', views.index, name="index"),
    path('generate_qr_code/', views.generate_qr_code, name="generate-qr-code")
]
# "core/urls.py"

from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('my_app1/', include('my_app1.urls'))
]
{% "templates/index.html" %}

<a href="{% url 'my_app1:generate-qr-code' %}" target="_blank">
  Generate Qr Code
</a>
{% "templates/qr_code.html" %}

<img src="{{ qr_code_data }}" />

相关问题