MUI調用照片以及裁剪和圖庫照片上傳到伺服器【後端部分】
涉及技術:
前端:MUI
後端:Flask
資料庫:MongoDB
一.MUI後端接受照片
1.1 主要的py檔案
先設定固定接受照片路由,用于處理資料請求。
@app.route("/photo", methods=['POST', 'GET'])
我們在上一篇中寫到,前端以及将目的照片将照片的檔案流轉換為besa64格式的資料流,是以我們在後端裡,需要接受它的baes64的資料流檔案:
score = request.form.get("imageBase64")
現在的score裡面就是我們需要的照片流。我們将其代碼子產品化,建立一個Photo的py檔案。
在主要的py檔案裡将裡面的三個方法引入到我們需要的PHOTO檔案裡面:
from Photo import imgshibie, wordshibie,translate
1.2 在子子產品Photo中調用API
我們首先引入需要的py子產品包,如下:
import requests
import base64
import http.client
import hashlib
import urllib
import random
import json
1.2.1 調用通用文字識别(高精度版)某度
百度通用翻譯API,不包含詞典、tts語音合成等資源。
coding=utf-8
調用調用通用文字識别的目的URL
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
二進制方式打開圖檔檔案
img=imgByteArr
access_tokenx = "XXXXXX"
params = {"image": img}
access_tokenx為個人的token,需要個人申請。
params存放着我們的目标二進制方式圖檔檔案。
調用其API
request_url = request_url + "?access_token=" + access_tokenx
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
如果識别成功:
qwes=response.json()['words_result']
overword=""
for word in qwes:
overword =overword+word["words"]
# print(overword)
return overword
調用某度的API之後,傳回本次文字識别的結果,傳回給主要的py裡,後面會響應給前端。
通用物體和場景識别:
目的的API為
request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general"
1.2.2 中文和英文互相翻譯API調用
百度appid和密鑰需要通過注冊百度【翻譯開放平台】賬号後獲得。
appid = 'XXXX' # 填寫你的appid
secretKey = 'XXXX' # 填寫你的密鑰
這裡有一個需求,因為我需要上傳一個圖檔,然後進行一個文字提取:有倆種情況
- 如果是中文:翻譯為英文傳回到前端
- 如果是英文:翻譯為中文傳回到前端
通用翻譯API HTTP位址如下:
httpClient = None
myurl = '/api/trans/vip/translate'
寫一個檢驗是否含有中文字元的字函數:
def is_contains_chinese(strs):
for _char in strs:
if '\u4e00' <= _char <= '\u9fa5':
return True
return False
如果這個函數裡面,傳入的值含有中文字元的值,傳回True,否則傳回Faalse。
實作,如果是中文:翻譯為英文傳回到前端,如果是英文:翻譯為中文傳回到前端
if is_contains_chinese(translate):
fromLang = 'auto' # 原文語種
toLang = 'en'
else:
fromLang = 'auto' # 原文語種
toLang = 'zh'
手動錄入翻譯内容,q存放
q = translate
sign = appid + q + str(salt) + secretKey
sign = hashlib.md5(sign.encode()).hexdigest()
myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + \
'&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign
建立會話,傳回結果。
response是HTTPResponse對象
httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET', myurl)
response = httpClient.getresponse()
result_all = response.read().decode("utf-8")
result = json.loads(result_all)
傳回值結果如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsQTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SM2ITO1ImM5UWYyITMyUGNzYzX0MDN0ETM4EzLcBTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
二 . MUI和Flask的特點
MUI的特點: