zl程序教程

您现在的位置是:首页 >  硬件

当前栏目

MUI调用照片以及裁剪和图库照片上传到服务器【后端部分Flask+MUI】

服务器 调用 以及 部分 Flask 照片 传到 裁剪
2023-06-13 09:18:57 时间

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的特点:

极小:100k的js文件,60k的css文件。原生编写,不依赖任何三方框架 极强:xcode和Android studio里所有原生控件都具备 高性能:精练的代码、适时的5+原生动画调用,达到原生应用的体验 多端发布:编写一套代码,iOS、Android、浏览器、微信H5、百度直达号、流应用全覆盖

Flask的特点:

良好的文档、丰富的插件、包含开发服务器和调试器(debugger)、集成支持单元测试、RESTful请求调度、支持安全cookies、基于Unicode