我在github上使用a library自己生成了qrcode,而不是使用api,但我很难理解如何渲染PIL图像对象(这是默认的图像渲染器)。到目前为止,我有这个:
import qrcode
from qrcode.image.pure import PymagingImage
img = qrcode.make('Some data here', image_factory=PymagingImage)
但是在将其作为图像显示在主页视图上时,我感到很困惑。
感谢您的任何帮助:)
编辑:如果可能的话,也非常感谢您对html语法的一些澄清:
<div class="row">
<div class="col-xs-12">
<img src="{% static "some.jpg" %}" alt="somename" class="img-responsive"/>
</div>
</div>
谢谢:)
生成QR码后,您需要将其作为图像返回。在我的一个项目中,我使用了这个库。我在这里:
def generate_qr_code(data, size=10, border=0):
qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=size, border=border)
qr.add_data(data)
qr.make(fit=True)
return qr.make_image()
和视图:
@render_to()
def return_qr(request):
text = request.GET.get('text')
qr = generate_qr_code(text, 10, 2)
response = HttpResponse(mimetype="image/png")
qr.save(response, "PNG")
return response
然后您可以传递文本以查看,图像作为结果返回。
UPD:
我有一个模板标签可在我的模板中显示qr。
@register.inclusion_tag('qrcode/qr_tag.html', takes_context=True)
def get_qrcode_image(context, text, size):
url = reverse('generate_qr')
return {'url': url, 'text': text, 'size': size}
和模板'qrcode/qr_tag.html'
:
<img src="{{url}}?size={{size}}&text={{text}}" />
因此,您可以通过这种方式包括QR码:
<div class="row">
<div class="col-xs-12">
{% get_qrcode_image 'some text to decode' 320 %}
</div>
</div>
问题的标题和答案相互之间不太匹配,因为它们既未提及PIL,也未引用其他库。仅在搜索有关在Django视图中显示PIL生成的图像的示例时,此问题坚持要首先列出。
这是一个更新的答案,可以回答原始问题。
from django.http import HttpResponse
from PIL import Image
def my_view(request):
image = Image.new('RGB', (128,128), 'green')
response = HttpResponse(content_type='image/jpeg')
image.save(response, "JPEG")
return response