书接上文,我们完成了对接阿里云人像动漫化接口,现已完成的界面是这样的:

就是效果看着一般,看看效果:

然后我就在阿里云api市场转悠,就想看看还有没有什么其他奇奇怪怪的api,结果就发现了这个:

api链接这里:
https://help.aliyun.com/zh/viapi/api-generative-image-cartoon

看看这个效果,完全是之前的不能比的啊:

果断想到接入自己的小程序里,SDK调试链接:
https://next.api.aliyun.com/api/imageenhan/2019-09-30/GenerateCartoonizedImage?sdkStyle=old

它是一个异步任务,提交请求后会返回一个RequestId,我们需要拿这个RequestId去另一个接口拿到处理结果,可能需要等个8秒左右才有结果,因为处理需要耗时:
调试链接:
https://next.api.aliyun.com/api/imageenhan/2019-09-30/GetAsyncJobResult?sdkStyle=old

大家也可以按我上面的方法使用。

看看它的SDK写法:

就两个参数,一个图片链接、一个风格效果,在之前的配置上我们增加一个生成式图形卡通化的风格配置:

接下来先让它显示到界面上,因为我们之前已经有了一些风格选择,所以之前的风格选择我们要做成组件形式,不然会代码重复:

风格选择组件就这些简单HTML结构,我们在页面引用:

这里有两个风格列表,和两个风格的索引还有不同风格的点击事件,先看看页面呈现效果:

就是这样一个上下排列的结构。

我们这里只允许上下只能点击一个风格,就比如我们点了上面的3D特效,那么下面就不能选中,同理,选择了下面的风格,上面之前选中的就失焦了:

如何实现这个效果呢?上面的既不能选择第一个也就是原图、也不能上下两行风格同时选择。

首先第一个,只需要在点击时判断是否为0即可,为0则跳过,否则设置当前索引为点击时的索引:

可以看到我这里有一个设置为null的操作,这是因为设置为null以后某一条就不会选中任何风格了:

这里的style_select_index允许为null类型,否则设置null时,style_select_index就只能为0了,因为这是Number类型的默认值为0。

处理好了风格选择后,开始处理提交事件,点击上面一排风格时走原先的人像动漫化接口,如果点击的是下面一排风格,那么就得走生成式图像卡通化接口。

我们先把生成式图像卡通化接口接进来:

接口挺简单的,传入图片和风格类型即可。

再在选择第二排风格时做走生成式图像卡通化接口的逻辑:

这里我判断的逻辑是:如果为选中人像动漫化那一排的风格,那么就肯定选中了生成式图像卡通化风格。

这里的逻辑是先调用异步任务创建阿里云任务,再将阿里云创建的任务放到我本地创建的一个队列中,再去轮询阿里云任务处理的结果。

让我们看看代码,先创建异步任务、再将异步任务添加到本地队列:

本地队列追加的逻辑:

然后再起一个定时任务去轮询定时任务状态:

先while去检查本地队列是否存在任务,如果没有任务则继续下次轮询判断,如果本地队列存在任务,则从头部弹出一个任务,并向阿里云查询异步任务结果:

大概流程就是如上↑。

我们实际提交一个任务看看,当为异步任务时,我会将追加到列表的上传任务的状态设为loading,意为上传中:

因为定时任务一直在跑,所以队列有内容时就会开始处理了:

第一排的特效每次返回基本都差不多,但是第二排的特效有些返回都是不一样的,我比较喜欢这个炫彩卡通的,因为它每次都返回不一样的图片:

小程序名:《一方云知》。首页就是人像动漫化功能,欢迎大家使用。

小程序二维码:

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

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

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

微信小程序开发:异步处理接入的生成式图像卡通化的更多相关文章

  1. $微信小程序开发实践点滴——接入Bmob后端云

    Bmob后端云官网:http://www.bmob.cn/ 微信公众平台官网:https://mp.weixin.qq.com/ 微信小程序官方开发文档:https://mp.weixin.qq.co ...

  2. [辅助软件] 微信小程序开发资源汇总 接入指南

    https://github.com/justjavac/awesome-wechat-weapp https://github.com/justjavac/awesome-wechat-weapp ...

  3. 初尝微信小程序开发与实践

    这可能是一个java程序员最不务正业的一次分享了. 小程序的火热相信不用我多说了,年初的时候老婆去浦东某达面试,甚至都被问有没有小程序测试经验.俨然小程序成为了互联网公司自PC,WAP,安卓,IOS之 ...

  4. 微信小程序开发详解——小程序,大颠覆!

    微信小程序开发 联系 苏念 188.1414.7927  微信小程序系统开发 微信新功能开发 小程序开发 小程序怎么开发 app小程序开发 简化小程序开发 微信小程序定制 小程序制作 开发微信小程序  ...

  5. 微信小程序开发06-一个业务页面的完成

    前言 接上文:微信小程序开发05-日历组件的实现 github地址:https://github.com/yexiaochai/wxdemo 这里来说一说我们的理念,我们也学习小程序开发有一周多了,从 ...

  6. 微信小程序开发笔记01

    微信小程序开发的优势 1,不用安装,即开即用,用完就走.省流量,省安装时间,不占用桌面: 2,体验上虽然没法完全媲美原生APP,但综合考虑还是更优: 3,对于小程序拥有者来说,开发成本更低,他们可以更 ...

  7. 微信小程序开发学习资料

    作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  8. 总结微信小程序开发中遇到的坑

    总结微信小程序开发中遇到的坑,一些坑你得一个一个的跳啊,/(ㄒoㄒ)/~~ 1,页面跳转和参数传递实例 首先说一下我遇到的需求有一个我的消息页面,里面的数据都是后端返回的,返回的数据大致如下,有一个是 ...

  9. 微信小程序开发中的二三事之网易云信IMSDK DEMO

    本文由作者邹永胜授权网易云社区发布. 简介 为了更好的展示我们即时通讯SDK强悍的能力,网易云信IM SDK微信小程序DEMO的开发就提上了日程.用产品的话说就是: 云信 IM 小程序 SDK 的能力 ...

  10. 微信小程序开发教程,大多数人都搞错的八个问题

    小程序目前被炒得沸沸扬扬,无数媒体和企业借机获取阅读流量. 这再次证明一点,微信想让什么火,真的就能让什么火.这种能力真是全中国再也没有人有了,政府也没有. 但四处传的消息很多是失真的,废话不说,先列 ...

随机推荐

  1. Linux RDP 会话中无法打开VSCode 解决办法

    github issue: VS Code "and still" won't open in a Linux xrdp session Workaround- Linux RDP ...

  2. DHCP的安装与配置

    一:前期准备 1.打开windows虚拟机,使用仅主机模式 (虚拟机(M)→设置(S)→网络适配器) 2.修改Windows ip可选范围为192.168.1.204到192.168.1.207 对应 ...

  3. JS leetcode 两个数组的交集I II 合集题解分析

    壹 ❀ 引 前些日子,在与博客园用户MrSmileZhu闲聊中,我问到了他先前在字节跳动面试中遇到了哪些算法题(又戳到了他的伤心处),因为当时面试的高度紧张,原题描述已经无法重现了,但大概与数组合并. ...

  4. Linux下磁盘管理工具:hdparm/iostat/parted/fdiisk/badblocks/smartctl/losetup/sg3_utils/sqinfo/smp_utils/udevadm

    一.hdparm:       hdparm可以检测,显示与设定IDE,SCSI,SATA,SAS硬盘的硬件参数,       如: hdparm -I /dev/sdc 可以获取sdc的硬件信息  ...

  5. 【Unity3D】Bloom特效

    1 Bloom 特效原理 ​ Bloom 特效是指:将画面中较亮的区域向外扩散,造成一种朦脓的效果.实现 Bloom 特效,一般要经过 3 个阶段处理:亮区域检测.高斯模糊.Bloom 合成. ​ 本 ...

  6. Oracle数据库报ORA-01078和LRM-00109错误解决方法

    创建实例后,进入sqlplus启动报错:     sqlplus / as sysdba;     SQL*Plus: Release 11.1.0.6.0 - Production on Wed A ...

  7. 解决:Not found the kernel library or the kernel library is invalid

    问题说明: 今天运行一个E语言写的程序报错, 看样子是缺少核心依赖库. 解决方法 去下载个易语言安装包安装一下即可.比如我安装的是: 易语言5.6完美破解版(精简版).exe 下载地址:https:/ ...

  8. kubernetes(k8s)大白学习01-kubernetes是什么?有什么用?

    kubernetes(k8s)大白基础学习-kubernetes是什么? 一.认识 Docker Docker 是什么 先来看看 Docker 的图标: 一条鲸鱼背上驮着四方形块的物品,就像一条海运船 ...

  9. [BUUCTF][Web][GXYCTF2019]Ping Ping Ping 1

    打开靶机对应URL 提示有ip参数 尝试构造url http://714ad4a2-64e2-452b-8ab9-a38df80dc584.node4.buuoj.cn:81/?ip=127.0.0. ...

  10. Git 分支管理参考模型

    一个值得参考的Git分支管理模型如下: master 生产主分支,发布到生产环境使用这个分支,由hotfix或者release分支合并过来,不直接提交代码. release 预发布分支, 基于feat ...