微信小程序开发:接入阿里云人像动漫化api接口

前面我已经把腾讯云的人像转动漫化接口接到了我的小程序里,但是和阿里云的对比后,发现阿里云的效果会更好一些,且支持更多特效,如下:

我比较喜欢这个3D特效风格,动画3D也可以,大家拭目以待。

话说上次接了腾讯云的人像转动漫接口,小程序提审后居然没过,说什么我的小程序设计AI合成:

然后我就说我用的是你们腾讯的云api,才给我通过审核:

太难了,个人你要是想做AI的东西,直接一刀切了,我之前还做过接入微软的azure openai,微信审核直接给我拒绝了,不管你怎么提交说明都没用。

我就把这个功能隐藏了,自己用算了。

回到正文,我们看看阿里云的人像动漫化接口文档:

很简单,就两个参数。

而且还和腾讯云一样,提供了完整的SDK示例:

但是这个v2版本的是用ts写的,且uniapp的云对象好像不支持import语法。

所以我这里使用的v1版本:

v1版本看起来简单很多,但是使用起来却有个问题,因为我之前用的腾讯云的对象存储,所以图片的链接自然而然是腾讯云的,不传不知道,一传报错了:

意思是只能使用阿里云的oss地址,但是吧,又有使用其他oss地址的使用方法:

help.aliyun.com/zh/viapi/de…

相当于是换了一种请求方式了,这里得请求方式不是人像动漫化的请求方式,人像动漫化的请求方式又得去找,而且还不知道在哪里找,遂就使用阿里云的oss好了,开通后创建一个上海区域的bucket:

所以现在的流程是:先将图片上传到阿里云的oss,再拿到图片的地址后传到人像动漫化接口,但是这个url只有短暂的使用周期,还得有个进程去删除,这里我想的是上传后有个表存一下文件路径,一天后自动删除,这样不占用存储空间,因为这些图片上传后就没有了,说干就干:

看了一下阿里云的上传文件,好像还挺简单的:

只需要拿到本地文件路径即可,再传一个自定义的文件名就行。

所以现在的大概流程是:先上传文件到阿里云的对象存储,拿到图片地址后传给阿里云的人像动漫化接口,再有一个定时任务去删除这些上传的图片文件,大概保存1天左右。

所以目前第一步就是先上传文件到阿里云oss。

直接把阿里云oss上传文件的示例代码复制一下:

先安装一下这两个包:

1、npm install ali-oss

2、npm install path

因为我电脑就一个512G的SSD,所以没有分区,就一个C盘。

安装好了:

看着三个包,其实整个node_modules大小居然有17M:

把阿里云上传oss代码稍微改一改:

// 上传文件到oss

/**

  • @param {Object} tem_path 完整本地文件名,如:
    http://tmp/qr57Es0lWn3B3f29b015140ccefdbf4504bbe2e1228f.png

*/

async upload_file(tem_path) {

let Config = await module.exports.get_config()

const client = new OSS({

region: Config.region,

accessKeyId: Config.accessKeyId,

accessKeySecret: Config.accessKeySecret,

bucket: Config.bucket,

})

const result = await client.put(path.basename(tem_path), tem_path)

return path.basename(tem_path)

}

但是又有新的问题:

阿里云的oss好像不能适应微信小程序的这种本地文件的形式。

遂改变上传方法,采用了:
developers.weixin.qq.com/community/d…

在根目录的common下创建如下目录和文件:

在upload.js中导出上传的function:

使用:

import {

aliyunUploadFile

} from '@/common/upload_file_aliyun/upload'

// 调用上传方法,local_path是uview框架的u-upload回调中的event.file.url

await aliyunUploadFile(local_path)

此时可以成功上传文件了:

阿里云oss文件列表:

然后将这个阿里云的oss地址传给人像动漫化接口即可:

resultUrl = await aliyun_api.faceCartoonPic(this.raw_images[0]['url'], "animation3d")

console.log('resultUrl', resultUrl)

但是又有新的问题:

这个问题我是没想到,是url的问题?

我将人像动漫化接口的示例url拿过来传过去看看有没有问题,对比了下原来是endpoint配错了:

改正之后就可以调用并生成了~:

好了,再把那几个风格的选项加到界面上即可:

可以左右拖动。

但是打包上传后,又有新问题:

本地开发环境好好的,体验版这又是个啥?

先把之前安装的无用npm包删掉:

只保留人像动漫化的sdk。

删了两个npm包后瞬间只有5M的占用了,之前17M:

回到这个线上错误:

错误暂时定位到这里:

这样访问云对象就会报错,直接设置就没事:

想着之前腾讯云报错是因为线上环境NodeJs版本问题,索性就将线上NodeJs版本该高一点,结果当前的报错就解决了,解决了。。:

好家伙,以后涉及云对象之类的报错先升级NodeJs版本先。

OK,到这里,小程序对接阿里云人像动漫化接口就完成了,实现的效果为可尝试不同的效果进行转换,如:

换个风格继续生成:

小程序名:《一方云知》。欢迎大家使用,人像动漫化接口是免费使用的。

这篇文章就到这里啦!如果你对文章内容有疑问或想要深入讨论,欢迎在评论区留言,我会尽力回答。同时,如果你觉得这篇文章对你有帮助,不妨点个赞并分享给其他同学,让更多人受益。

想要了解更多相关知识,可以查看我以往的文章,其中有许多精彩内容。记得关注我,获取及时更新,我们可以一起学习、讨论技术,共同进步。

感谢你的阅读与支持,期待在未来的文章中与你再次相遇!

掘金的文章也是我写的,复制过来了。

作者:一方_self
链接:https://juejin.cn/spost/7342327642853113856
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

波奇学Liunx:信号的产生,保存,处理

信号的产生,信号的保存,信号的处理 在操作系统中进程接受到信号会保存,产生 进程必须识别和能够处理信号,处理信号是进程的内置功能 进程收到信号时不一定会立即执行,所以进程必然有一套识别,保存&#xff…

Nodejs 第四十四章(redis基本使用)

字符串的操作 SET key value [NX|XX] [EX seconds] [PX milliseconds] [GET]key:要设置的键名。value:要设置的值。NX:可选参数,表示只在键不存在时才设置值。XX:可选参数,表示只在键已经存在时才设置值。…

MySQL字符集和比较规则

MySQL字符集和比较规则 字符集和比较规则简介 字符集: 描述字符与二进制数据的映射关系 比较规则:比较指定字符集中的字符的规则 字符集 我们知道,计算机无法直接存储字符串,实际存储的都是二进制数据。字符集是有限的&#xff…

windos 批量自定义 重命名

有时候需要批量重命名,window全选重命名格式又不能自定义,所以写了一个批处理文件来完成,可以自定义文件名格式 1.使用用方法 echo off setlocal enableextensions enabledelayedexpansion set i1 for /f %%i in (cd) do set var%%i for /r …

Python打发无聊时光:13.用pywin32库制作电脑本地快捷应用

第一步:新建一个simple_app.py 装库pywin32库 pip install pywin32 新建一个simple_app.py,复制下面代码,或者可以自己设计内容给 import tkinter as tkclass AnimatedGUI:def __init__(self, root):self.root rootself.root.title(&quo…

HTTP/2、HTTP/3分别解决了什么问题

总的来说就是HTTP/1.1是请求-响应模型导致队头阻塞问题,HTTP2是TCP层面导致队头阻塞问题 HTTP/2 多路复用,解决了HTTP/1.1队头阻塞问题 HTTP/1.1 的实现是基于请求-响应模型的。同一个连接中,HTTP 完成一个事务(请求与响应&…

华为OD机试真题C卷-篇6

100分值题 宽度最小的子矩阵部门人力分配电脑病毒感染会议室占用时间段路口最短时间问题5G网络建设 宽度最小的子矩阵 给定一个n行 * m列的矩阵;给定一个k个整数的数组k_list;在n*m的矩阵中找一个宽度最小的子矩阵,该子矩阵包含k_list中所有…

【三维重建】VastGaussian:用于大场景重建的大3D Gaussian(CVPR 2024)

题目:VastGaussian: Vast 3D Gaussians for Large Scene Reconstruction 来源:清华大学;华为诺亚;中国科学院 链接:https://vastgaussian.github.io/ 总结:VastGaussian:基于3D GS的分块优化重…

2024年天津市安全员B证证模拟考试题库及天津市安全员B证理论考试试题

题库来源:安全生产模拟考试一点通公众号小程序 2024年天津市安全员B证证模拟考试题库及天津市安全员B证理论考试试题是由安全生产模拟考试一点通提供,天津市安全员B证证模拟考试题库是根据天津市安全员B证最新版教材,天津市安全员B证大纲整理…

【Linux】Linux原生异步IO:AIO

1、IO模型 1.1 简述 相信大家在搜索的时候,都会看到下面这张图,IO的使用场景:同步、异步、阻塞、非阻塞,可以组合成四种情况: 同步阻塞I/O: 用户进程进行I/O操作,一直阻塞到I/O操作完成为止。同步非阻塞I/O: 用户程序可以通过设置文件描述符的属性O_NONBLOCK,I/O操作可…

世界的本质是旋转(5)-在复平面上驱动软件无线电SDR交换BPSK波形

在上一篇文章中,我们介绍了复平面、拍照采样的一些思维实验。从本节开始,转入现实应用,通过控制复平面向量的位置,实现一个完整的BPSK全双工通信通道。 发射方:通过控制复平面向量在各个时刻的位置来携带信息的技术&a…

Socks5代理协议:原理、应用与优势

在计算机网络中,代理协议是一种用于转发客户端请求的机制。Socks5是其中一种广泛使用的代理协议。它主要工作在传输层和应用层之间,位于OSI参考模型的第五层(会话层)。其设计初衷是为了帮助授权用户突破防火墙限制,获取…

【洛谷 P8682】[蓝桥杯 2019 省 B] 等差数列 题解(数学+排序+辗转相除法)

[蓝桥杯 2019 省 B] 等差数列 题目描述 数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N N N 个整数。 现在给出这 N N N 个整数,小明想知道包含这 N N N 个整数的最短的等差数列有几项? 输…

远程调用--webClient

远程调用webClient 前言1、创建webClient2、准备数据3、执行请求4、接收返回响应到的数据整体代码 前言 非阻塞、响应式HTTP客户端 1、创建webClient WebClient client WebClient.create();2、准备数据 Map<String,String> params new HashMap<>();params.pu…

google最新大语言模型gemma本地化部署

Gemma是google推出的新一代大语言模型&#xff0c;构建目标是本地化、开源、高性能。 与同类大语言模型对比&#xff0c;它不仅对硬件的依赖更小&#xff0c;性能却更高。关键是完全开源&#xff0c;使得对模型在具有行业特性的场景中&#xff0c;有了高度定制的能力。 Gemma模…

c语言游戏实战(10):坤坤的篮球回避秀

前言&#xff1a; 这款简易版的球球大作战是博主耗时两天半完成的&#xff0c;玩家需要控制坤坤在游戏界面上移动&#xff0c;来躲避游戏界面上方不断掉下来的篮球。本游戏使用C语言和easyx图形库编写&#xff0c;旨在帮助初学者了解游戏开发的基本概念和技巧。 在开始编写代…

php开发项目 docx,pptx,excel表格上传阿里云,腾讯云存储后截取第一页生成缩略图

服务器或者存储上传的word,ppt和excel表格需要截取内容展示的时候,就需要管理后台每次上传文件时根据不同文件类型截取图片保存起来,并讲图片的地址保存到数据字段中.网上搜索了很多相关文章遇到的坑不少,经过2天时间终于完成了,将代码和遇到的问题完整记录下来. 本文用的…

【JavaEE进阶】 Linux常用命令

文章目录 &#x1f343;前言&#x1f334;ls 与 pwd&#x1f6a9;ls&#x1f6a9;pwd &#x1f38d;cd&#x1f6a9;认识Linux目录结构 &#x1f340;touch与cat&#x1f6a9;touch&#x1f6a9;cat &#x1f332;mkdir与rm&#x1f6a9;mkdir&#x1f6a9;rm &#x1f384;cp与…

长贵对赵本山说:你需要我们家大脚,我立马给你配双大鞋!

长贵对赵本山说&#xff1a;你需要我们家大脚&#xff0c;我立马给你配双大鞋&#xff01; --小品《乡村爱情》&#xff08;中2&#xff09;的台词 表演者&#xff1a;赵本山 于月仙 王小利 唐鉴军等 &#xff08;接上&#xff09; 哈哈哈 伊拉克啊 这地方也不产这玩意吧 …

Blazor 向 ECharts 传递 option

目标 将ECharts封装为Blazor组件&#xff0c;然后通过jsRuntime向ECharts传递参数&#xff0c;即设置option。 封装ECharts 步骤&#xff1a; 1. 在index.html中引入echarts.min.js&#xff1b; 2. 创建blazor组件&#xff0c;将ref传递给js用于初始化echarts&#xff1b; …