一、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) })