码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 微信小程序开发:异步处理接入的生成式图像卡通化


    合集 - 小程序开发(17)
    1.小程序开发:将改造后的步骤条插件移植到自己的小程序01-132.小程序开发:完善步骤条的上滑、下拉刷新操作01-133.小程序开发:笔记详情显示图片以及可以富文本编辑01-134.小程序开发:修复了两个问题和页面改名01-215.聊聊微信小程序的流式(stream)响应请求02-196.小程序开发:接入腾讯云的人像动漫化api接口02-297.uniapp同步将本地图片转换为base64,支持微信、H5、APP02-298.小程序开发:app.vue检测更新时判断是否是朋友圈进入03-019.微信小程序开发:接入阿里云人像动漫化api接口03-0410.小程序开发:定时删除上传的阿里云oss文件03-0411.微信小程序开发:循环定时删除阿里云oss上传的文件03-0512.微信小程序开发:页面分享卡片、风格选择、通道启用等可配置03-0613.微信小程序开发:记一次提审失败的反馈重审03-0614.微信小程序开发:精细化处理人像动漫化调用之前的人像修复增强03-1115.微信小程序开发:调用人像动漫化接口前先限制并缩放图片尺寸03-1216.微信小程序开发:上传网络图片到阿里云oss03-13
    17.微信小程序开发:异步处理接入的生成式图像卡通化03-15
    收起

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

     

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

     

    然后我就在阿里云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,意为上传中:

     

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

     

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

     

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

    小程序二维码:

     

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

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

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

  • 相关阅读:
    计算机网络的定义和分类
    IntelliJ IDEA、.NET 工具变贵,JetBrains 宣布全家桶涨价!
    Android系统实现多网共存且能独立上外网
    十八、完整神经网络模型验证步骤
    IntelliJ IDEA 2022.2来了:已完全支持 Spring 6 和 Spring Boot 3
    网工知识角|华为网络工程师,华为、华三、思科设备三层交换机如何使用三层接口?命令敲起来
    java之Object类
    针对U盘文件的盗与防攻略
    Rust-FFI复杂参数传递处理方式1--数组类型
    2、数组、Map+HashMap、Set+Hashset、Char和Character类、String类和Char类、Math类
  • 原文地址:https://www.cnblogs.com/shuinanxun/p/18076377
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号