图片64base转码与解码

场景一:图片转码成base64,传输,接收后解码成png等格式图片

import base64

# 读取图片,转换为base64编码格式
with open("F:\Archer\picture\yunyun.jpg", "rb") as f:
    content = f.read()
    base64_data = base64.b64encode(content)     # 转换为base64编码

# 写入图片,将base64格式解码写入图片(存在覆盖,不存在创建)
with open("F:\Archer\picture\yunyun2.png", "wb") as file:
    content = base64.b64decode(base64_data)     # 将base64编码解码
    file.write(content)

场景二:图片转码成base64,加到邮件的Html里面,邮件的接受者直接可查看(解决问题:邮件里的图片地址为本地的,邮件接受者显示不出来)

import base64

with open("F:\Archer\picture\yunyun.jpg", "rb") as f:
    # b64encode是编码,b64decode是解码
    base64_data = base64.b64encode(f.read())    # 编码
    # base64.b64decode(base64data)
    base64_data_str = str(base64_data, encoding="utf-8")
    html_str = "data:image/jpg;base64," + base64_data_str
print(base64_data_str)

htmlBody = f"""
  <body>
    <img src="{html_str}">
  </body>
"""

场景三:本地图片转换为base64格式编码,传递到前端展示

view部分:

import base64
from django.shortcuts import render
from django.core.paginator import Paginator

def images(request, pictureFile_list):
    image_list = []
    for file in pictureFile_list:
        with open(file, "rb") as f:
            base64_data = base64.b64encode(f.read())
            base64_data_str = "data:image/jpg;base64," + str(base64_data, encoding="utf-8")
            image_list.append(base64_data_str)

    paginator = Paginator(image_list, 1)  # 实例化Paginator, 每页显示1条数据
    page = paginator.page(paginator.num_pages)  # 传递当前页的实例对象到前端
    # print(page.paginator, page.object_list)
    content = {"page": page}

    return render(request, 'images.html', content)

 template部分:

{% for img in page %}
    <div>
        <img src="{{ img }}" />
    </div>
{% endfor %}

 

posted on 2022-06-28 22:57  云初见  阅读(3134)  评论(0编辑  收藏  举报