调用万维易源API实现证件照换装

news2024/11/17 14:46:30

目录

  • 1. 作者介绍
  • 2. 万维易源API简介
    • 2.1 易源数据
    • 2.2 易源API管理
    • 2.3 调用参数简介
  • 3. 万维易源API调用过程
    • 3.1 获取ID和代码
    • 3.2 代码实现
    • 3.3 完整代码
  • 参考(可供参考的链接和引用文献)

1. 作者介绍

吴宇,男,西安工程大学电子信息学院,2022级研究生
研究方向:机器视觉与人工智能
电子邮件:1486263630@qq.com

路治东,男,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:x2063079527@qq.com

2. 万维易源API简介

2.1 易源数据

易源数据是一家业内领先且以自营为主的优秀API数据交易平台。目前平台拥有十个大类近500个数据接口,日调用量5000万次,开发者5万名,合作企业3000家。

2.2 易源API管理

把易源平台比喻为自助餐厅在销售易源自己的品,这些菜品有自己的管理体系(API管理),很多用户觉得这套管理体系不错,也想把自己做的菜放到易源的自助餐厅来托管,有两个目的:易源餐厅可以对外销售第三方的菜品(服务商上架接口);易源餐厅可以很好地完成对您菜品的质量管理、监控、日志、计费等。

2.3 调用参数简介

1.输入选择
我们可以选择url或者base64作为输入,简介如下图(截至官网):
在这里插入图片描述
在这里插入图片描述
2.服装选择
Cloths_num参数是修改你需要变换的服装,分为童装、女装、男装,主要修改参数如男装类第一行第一个:m1就行,主要图像如下图所示(截至官网):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.背景模板
code是背景模板编号。
在这里插入图片描述
4.背景颜色
背景颜色选择参考下图(截至官网):

在这里插入图片描述

3. 万维易源API调用过程

3.1 获取ID和代码

1.进入官网注册账号
在这里插入图片描述
2.搜索“人像特效处理”
在这里插入图片描述
3.进入点击购买
在这里插入图片描述
4.获取ID和密钥
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.代码获取
获取ShowapiRequest.py代码
在这里插入图片描述
这里我们可以选择另存为我们的一个文件夹中,如下图:
在这里插入图片描述
在这里插入图片描述
获取预览代码(preview.py)复制粘贴即可:
在这里插入图片描述
获取下载代码(download.py)复制粘贴即可:
在这里插入图片描述
在ShowapiRequest.py文件夹下创建两个复制粘贴的代码,创建后的文件夹py文件如下:
在这里插入图片描述

3.2 代码实现

1.安装所需要的库
我们可以新建一个环境
格式:conda create -n your_env_name python=x.x
我们按照要求输入指令:conda create -n AIwork python=3.6.5
(这里我们的环境名可以根据个人要求改变 your_env_name→你想要创建的环境名称)
在这里插入图片描述
装好环境后,我们激活环境
conda activate AIwork
(要和上面你所创建的环境名一致,大小写都要一致,否则无法识别)
接下来我们装requests包
pip install requests
如果安装不成功,我们可以选择华清源镜像
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
如果还是不行 检查是否科学上网,或者网络是否连接上。
在这里插入图片描述
2.修改参数并运行
需要修改的参数如下图箭头标识:
我们不用修改我们的ShowapiRequest.py 它相当于我们后面两个函数调用的函数。
这是preview.py文件
在这里插入图片描述
我们首先修改preview.py文件代码,将我们的ID和appsecret更换,然后选择是base64还是url进行输入(个人选择url),然后我们选择我们需要的背景颜色,我们需要转换的证件照样式,code可以不修改,想修改的同学可以到官网了解了解。我这里没有修改code,运行结果如下:
在这里插入图片描述
看见后面输出有个order数字串,我们复制数字串。(前面链接大家感兴趣可以复制到网站打开,是一个带水印的换装后的图片,我们的download.py文件就是去掉这个水印)
下图就是download.py文件:
在这里插入图片描述
我们按照箭头修改自己的id和密钥,然后将preview.py运行后,我们刚刚复制的哪个数字串输入到箭头所指的“order”后面。
输出的结果是一个链接,大家复制链接进入网站打开下载就行啦。
3.Url获取
这里我尝试了两种url获取情况:一是qq空间获取,二是网站上直接复制图片网址。均失败了。可能是个人原因,大伙也可以试试。失败返回信息如下:
这是情况1:
在这里插入图片描述
这是情况2:
在这里插入图片描述
无果后我找到一个转换url的网站:https://zixiaoyun.com/
亲测有效
在这里插入图片描述
4.实验结果
我做了两组对比实验,检测这个api调用情况。如下图所示,我用了自己正装和非正装的图片进行测试。测试结果如下:效果其实差不多,就是图片太小了,分辨率太低了。
在这里插入图片描述
后面我选了一张日常生活拍的照片,这张照片是我考研时拍的学信网上的照片,我先把其裁成了和证件照差不多的size,然后转码输入,输出结果如下图第一行所示,接下来我直接将拍的这张图片转码输入,的得到的结果和截图的结果相差甚微。
在这里插入图片描述
稍微总结一下:万维易源调用api进行换装相当便捷,我们可以使用平时非正装的图片在不进行裁剪的情况下进行换装,缺点还是有点,就是过程比较复杂,要经历两个步骤,最开始输出的图片是有码的,后面还要根据第一次输出的码进行去水印操作,并且输出的图片大小越来越小,分辨率太低。

3.3 完整代码

ShowapiRequest.py

import requests
from urllib import parse
#全局请求头
files = {}
headers = {}
body = {}
timeouts = {}
resHeader = {}

class ShowapiRequest:
    def __init__(self, url, my_appId, my_appSecret):
        self.url = url
        self.my_appId = my_appId
        self.my_appSecret = my_appSecret
        body["showapi_appid"] = my_appId
        body["showapi_sign"] = my_appSecret
        headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2427.7 Safari/537.36"

    def addFilePara(self, key, value_url):
        files[key] = open(r"%s" % (value_url), 'rb')
        return self

    def addHeadPara(self, key, value):
        headers[key] = value
        return self

    def addBodyPara(self, key, value):
        body[key] = value
        return self
    #设置连接时间和读取时间
    def setTimeout(self, connecttimout, readtimeout):
        timeouts["connecttimout"] = connecttimout
        timeouts["readtimeout"] = readtimeout
        return self


    def get(self):
        get_url = self.url + "?" + parse.urlencode(body)
        if not timeouts:
            res = requests.get(get_url, headers=headers)
        else:
            timeout = (timeouts["connecttimout"], timeouts["readtimeout"])
            res = requests.get(get_url, headers=headers, timeout=timeouts)
        return res

    def post(self):
        if not timeouts:
            res = requests.post(self.url, files=files, data=body, headers=headers)
        else:
            timeout = (timeouts["connecttimout"], timeouts["readtimeout"])
            res = requests.post(self.url, files=files, data=body, headers=headers, timeout=timeout)
        return res

preview.py

# python3.6.5
# 需要引入requests包 :运行终端->进入python/Scripts ->输入:pip install requests
from ShowapiRequest import ShowapiRequest

r = ShowapiRequest("http://route.showapi.com/2673-19","	id","密钥" )
r.addBodyPara("img_base64","")
r.addBodyPara("img_url","链接")
r.addBodyPara("color","white")
r.addBodyPara("clothes_num","m5")
r.addBodyPara("code","1350")
res = r.post()
print(res.text) # 返回信息

download.py
# python3.6.5
# 需要引入requests包 :运行终端->进入python/Scripts ->输入:pip install requests
from ShowapiRequest import ShowapiRequest

r = ShowapiRequest("http://route.showapi.com/2673-20","ID","密钥" )
r.addBodyPara("order","preview.py运行后生成的一串数字")
res = r.post()
print(res.text) # 返回信息

参考(可供参考的链接和引用文献)

1.https://zhuanlan.zhihu.com/p/96897514
2.https://zixiaoyun.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/661291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LVS keepalived 集群

LVS keepalived 集群 LVS keepalived 集群一、Keepalived及其工作原理1.Keepalived体系主要模块及其作用2.健康检查的方式(探针) 二、LVSKeepalived 高可用群集部署1.LVS部署一:配置负载调度器(主、备相同)二&#xff…

FreeRTOS实时操作系统(二)任务创建与任务删除(HAL库)

文章目录 前言系统配置任务创建动态任务创建删除实践静态任务创建删除实践 前言 接着学习正点原子的FreeRTOS教程,涉及到一些详细的系统内文件代码 系统配置 可以通过各种的宏定义来实现我们自己的RTOS配置(在FreeRTOSconfig.h) “INCLUDE…

100天精通Python(可视化篇)——第92天:Pyecharts绘制炫酷柱状图、条形图实战大全

文章目录 专栏导读1. 基础柱状图2. 旋转x轴标签3. 旋转坐标轴4. 添加坐标轴名称5. 添加标记点6. 添加标注线7. 添加数据8. 添加自定义背景图9. 堆叠柱状图10. 柱状图与折线图组合11. 三维柱状图12. 水平滑动、鼠标滚轮缩放柱状图 专栏导读 🔥🔥本文已收…

ConcurrentHashMap源码

HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占,相当于所有线程进行读写时都去竞争一把锁,导致效率非常低下。 介绍 ConcurrentHashMap的底层原理和HashMap是比较相…

网页之http

目录 一、网页概念: 1.纯文本格式文件 2.编写语言-----html---超文本标记语言 3.浏览器相当于翻译器,检查是否为html文件,是的话就翻译,否则就报错。 二、域名 三、DNS解析 1.分布式域名解析-----层次性:迭代处…

谁是远程界的天花板?2023年5款最常用的远程软件横测:ToDesk、向日葵、TeamViewer、Splashtop、AnyDesk

前言 一个优秀的远控软件,追求的是可信赖的安全感,连接的流畅度、画质的清晰度、操作的简单化、毫秒级的无感延迟以及全方位的功能。另外,远控软件还应拥有独立的创新技术,具备竞争对手无法超越的市场前瞻性,与世界保…

MySQL - 第4节 - MySQL表的约束

1.MySQL表的约束概述 • 真正约束字段的是数据类型,如果插入的数据超出了对应数据类型的取值范围,那么数据将会插入失败。 • 但是数据类型的约束很单一,为了更好的保证数据的合法性,从业务逻辑角度保证数据的正确性,M…

ldr、str、ldm、stm、msr、mrs、swi、svc、mrc等ARM指令详解及具体应用

文章目录 前言一、跳转指令1.1 相对跳转1.2 绝对跳转 二、内存操作指令2.1 Load和Store2.1.1 伪指令2.1.2 伪操作 2.2 内存操作指令具体应用 三、 寄存器的寻址方式3.1 前索引寻址3.2 后索引寻址3.3 基址变址 四、块拷贝指令(多数据加载)4.1 块拷贝4.2 指…

Nacos 源码分析全系列

Nacos 源码分析全系列 学习目标 主线任务 代码解析画图git库(中文注释)设计思想多版本迭代讨论群(私聊进群) 主要的大纲路线 主要拆解的是nacos的1.4.1版本和2.1.0版本,还有nacos 的一些已知的bug 正确的学习源码的姿势 服务端是如何处理客户度的请求 注册中心服务 内存…

【备战秋招】每日一题:华东师范大学保研机试-2022-差分计数

为了更好的阅读体检,可以查看我的算法学习博客差分计数 题目内容 给定n个整数,...,和一个整数x。求有多少有序对(i,j)满足 输入格式 第一行两个整数,分别代表整数的个数和题目中的x。 第二行n个用空格隔开的整数,第i个代表 输出格式 一行一个整数…

1745_Perl中的switch结构

全部学习汇总: GreyZhang/perl_basic: some perl basic learning notes. (github.com) 用了很久时间的Perl了,但是一直没有使用过switch结构。即使有的时候,基本上也通过其他的形式完成了相关工作。虽说有时候可能会效率低一些,但…

【Python】使用pyside2时qt designer 设计窗口显示图标icon但是运行后不显示(图文说明)

目录 错误情况解决方法总结 欢迎关注 『Python』 系列,持续更新中 欢迎关注 『Python』 系列,持续更新中 平时用的不多,也不知道这个报错有没有偶然性,或者是我自己搞错了仅供参考。 错误情况 toolBar中的图标在designer中显示正…

【备战秋招】每日一题:华东师范大学保研机试-2022-位运算

为了更好的阅读体检,可以查看我的算法学习博客位运算 题目内容 给定一个int型整数x,将x的二进制表示中第i位和第j位的值互换。 注意: x的二进制表示的最右边为第0位。 输入格式 在一行中输入三个整数,x,i,j, 整数之间用一个空格分隔。 输出格式 在…

【开启微前端新时代】微前端:构建可扩展、可维护的现代 Web 应用

文章目录 第1章:微前端简介微前端是什么微前端的优势和劣势微前端有以下优势1. 独立部署2. 技术栈无关3. 更好的扩展性4. 短生命周期 微前端的劣势:1. 系统复杂度2. 通信机制3. 部署成本 微前端的历史和现状 第2章:微前端架构模式容器和子应用…

软考A计划-网络工程师-系统架构师案例分析知识点整理

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

Linux串口编程

文章目录 前言一、Linux下的TTY体系介绍二、行规层三、Linux串口编程步骤四、代码编写总结 前言 本篇文章将讲解如何在Linux下使用串口。 一、Linux下的TTY体系介绍 在Linux系统中,tty(Teletypewriter)是指一种终端设备,它提供…

Fiddler之Replay功能详解

今天就先来看看Fiddler的功能。 Fiddler,最容易看到的就是快捷工具栏中的 Replay 按钮 解释下: Reissue the selected requests. 重发选中的请求Hold CTRL to reissue unconditionallly. 选中请求按住 CTRL 键,点击Replay时无条件重发选中…

【MySQL函数】:让你的数据库操作更高效(一)

前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL字符串函数和数学函数的讲解✨ 目录 前言一、字符串函数二、数学函数三、总结 一、字符串函数 函数作用UPPER(列|字符串)将字符串每个字符转为大写LOWER(列|字符串)将字符串每个字符转为小写CONCAT(str1,str2,…

CSS的学习2

这几天复习了英语,高数,也考完四级了。 这两天开始写了课设的项目,选的是捷住宝,我打算用链表和搜索树。写着写着总是出问题,然后改Bug。还差删除信息和文件操作,还是尽量写好一些。 明天考英语&#xff…

TX-1C单片机实现多功能电子时钟

实验报告 电子时钟实验 一、实验要求:二、实验结果三、实验思路(一)模块整理(二)流程图绘制(三)C51编程 四、实验总结(一)未完成的部分(二)待优化…