我正试图在Django应用程序上使用Python制作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代码显示在浏览器的新选项卡上,而不是保存为图像,因为我只需要在那一刻把它们打印在纸上,我不需要保留图像。
谢谢你的帮助。
将图像转换为base64,并将其显示在html中,如所示
import base64
b64 = base64.b64encode(image).decode("utf-8")
更新:
ofc您不需要将图像保存为png即可使用此功能,您可以更改html格式,也可以更改图像格式,而无需将其保存到类似的文件中
您可以使用SVG格式导入qrcode导入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}}
毕竟,我在HTML:中使用了这一行
<img id='barcode' src="https://api.qrserver.com/v1/create-qr-code/?data={{ref}}" alt="" title="{{ref}}" width="150" height="150"/>
您可以通过点击Django模板中的链接,在新的选项卡中创建并显示二维码,代码如下:
# "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 }}" />