天天看點

MUI調用照片以及裁剪和圖庫照片上傳到伺服器【後端部分Flask+MUI】MUI調用照片以及裁剪和圖庫照片上傳到伺服器【後端部分】二 . MUI和Flask的特點

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)
           

傳回值結果如下:

MUI調用照片以及裁剪和圖庫照片上傳到伺服器【後端部分Flask+MUI】MUI調用照片以及裁剪和圖庫照片上傳到伺服器【後端部分】二 . MUI和Flask的特點
MUI調用照片以及裁剪和圖庫照片上傳到伺服器【後端部分Flask+MUI】MUI調用照片以及裁剪和圖庫照片上傳到伺服器【後端部分】二 . MUI和Flask的特點

二 . MUI和Flask的特點

MUI的特點: