【问题标题】:How to show a blob image on HTML page in Django?如何在 Django 的 HTML 页面上显示 blob 图像?
【发布时间】:2019-10-01 23:01:25
【问题描述】:

我的 mysql 数据库的 blob 字段中有一张图片。使用基本客户端正确显示图像,但我无法在 html 页面中显示图像。

我尝试对返回的字节使用 base64 转换器。

models.py:

class BlobImg(models.Model):
    photo = models.TextField(null=True)

views.py:

def home(request):
    obj = BlobImg.objects.get(id=1)
    image_data = base64.b64encode(obj.photo)

    data = {
        'news': News.objects.all(),
        'title': 'Главная страница',
        'imgs' : image_data
    }
    return render(request, 'app/home.html', data)

html:

<img src="data:image/jpeg;base64,{{ imgs }}" class="img-thumbnail">

我在“imgs”中得到字节字符串,但它不起作用

【问题讨论】:

  • AttributeError: 'bytes' 对象没有属性 'read'
  • 请显示值。
  • 它是一个很长的字节值,我如何将它插入到消息中?
  • obj.photo 值以:b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\... 等开头。@ 987654325@ 值开头为:b'/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQND...等

标签: python django base64 blob


【解决方案1】:

在 Python 3 中,base64.b64encode() 函数返回编码字节,而不是字符串。因此,您的数据 URI 显示为 data:image/jpeg;base64,b'/9j/4AA...',而它必须是 data:image/jpeg;base64,/9j/4AA...。要解决此问题,请将字节解码为字符串,例如使用 base64.b64encode(obj.photo).decode()

【讨论】:

  • 我设法将其应用于单个对象。我可以以任何方式将其应用于objects.all() 等查询集并以 json 格式发送吗?
  • @СергейМельник 当然。您需要将base64.b64encode(obj.photo).decode() 应用于每个对象。
猜你喜欢
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 2020-02-17
  • 1970-01-01
  • 2017-07-23
  • 2015-08-05
  • 2015-05-17
  • 2012-12-13
相关资源
最近更新 更多