python使用PIL處理圖片后返回給前端的坑


一、python代碼

這里有個坑,之前沒有將bytes圖片數據轉成base64就返回到前端了,但在前端處理的時候,怎么都顯示不出圖片來,雖然數據拿到了,但bytes被傳到前后變str了,所以怎么搞都沒搞出來,后來發現轉成base64后,前端能很方便的就將圖片顯示出來了,都不需要轉換類型

from io import BytesIO
import base64
from PIL import Image, ImageFont, ImageDraw
from flask import request

def PhotoAddNumber():
            if not request.json:
                return
            number = request.json.get("number")
            if not number:
                print("數據不能為空!")
    
            img_file = Image.open(r"圖片地址")
            font_1 = ImageFont.truetype(r"字體地址", 36)#36為字體大小
            #獲取圖片對象
            add_number = ImageDraw.Draw(img_file)
            # 添加數字,text里的參數是圖片的x,y軸,fill是字體顏色
            add_number.text((355, 20), number, font=font_1, fill="#262728")

            #將圖片保存到內存中
            f = BytesIO()
            img_file.save(f, 'jpeg')
            #從內存中取出bytes類型的圖片
            data = f.getvalue()
            #將bytes轉成base64
            data = base64.b64encode(data).decode()
            return data

二、前端代碼

# this.edit攜帶的數據
this.$http.post('請求后端的地址', this.edit
        ).then(res => {
            #創建一個a標簽,並將圖片的base64直接賦給a標簽的href
            var a = document.createElement("a")
            #base64圖片顯示的固定格式,這里我是直接下載的,沒有在html中顯示
            a.href = "data:image/jpg;base64," + res.data
            let name = prompt("輸入圖片名")
            a.download = name + ".jpeg"
            a.click();
          }
        ).catch(e => {
          alert("提交失敗,數據有誤!")
          console.log(e)
        })            

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM