autojs红眼特效
牙叔教程 简单易学
效果展示
autojs版本
8.8.2-0
代码简介
- 识别眼睛, 使用的是百度的人脸检测
- 在眼睛的位置, 画红眼特效, 使用了阴影, 模糊
- 红眼特效区域使用path.quadTo画了一个菱形曲线
get知识点
- 百度人脸检测token的获取
- 百度人脸检测
- 输入框监听
- 复选框和draw事件的交互
- 颜色正则校验
- 菱形曲线的绘制
- 阴影
- 模糊
- 画布旋转
- 画布缩放
代码讲解
1. 获取人脸信息
function 获取人脸信息(imgPath) {imgPath = files.path(imgPath);let access_token = "xxxxxxxxxxx";let url = "https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=" + access_token;let img = images.read(imgPath);let imgBase64 = images.toBase64(img);let res_json = http.post(url,{image: imgBase64,image_type: "BASE64",face_field: "landmark",},{headers: {"Content-Type": "application/json",},}).body.json();let faceList = res_json.result.face_list;return faceList;
}
2. 提取眼睛数据
function 识别眼睛(imgPath) {let faceList = 获取人脸信息(imgPath);let landmark72 = faceList[0].landmark72;let eye = {center: landmark72[38],pointList: landmark72.slice(30, 38),};return eye;
}
3. 设置全局变量
let 特效高度 = 4;
let 动画缩放倍数 = 1;
let 旋转角度 = 0;
let 一次旋转度数 = 1;
let 旋转间隙时长 = 8;
let 主色 = "#ff0000";
4. 获取图片数据
let imgPath = "./女生人脸.jpg";
let img = images.read(imgPath);
let iw = img.getWidth();
let ih = img.getHeight();
let mBitmap = img.getBitmap();
5. 退出时回收图片
events.on("exit", function () {log("结束运行");mBitmap.recycle();img.recycle();
});
6. UI布局, 画板和图片宽高一样, 方便处理
ui.layout(<vertical marginTop="50"><text textSize="23sp" w="*" gravity="center" textStyle="bold">红眼特效</text><frame w="*" gravity="center"><canvas id="board" w="{{iw}}px" h="{{ih}}px"></canvas></frame><text textSize="23sp" w="*" gravity="center" margin="9" textColor="#1e90ff">牙叔教程 简单易学</text><text id="state" textSize="23sp" w="*" gravity="center">正在识别眼睛, 请稍后</text><vertical marginLeft="80"><horizontal><text>主色</text><input id="主色" w="99"></input></horizontal><horizontal><checkbox id="旋转" text="旋转" gravity="center"></checkbox><text marginLeft="10">一次旋转度数</text><input id="一次旋转度数" w="55"></input></horizontal><checkbox id="缩放" text="缩放" gravity="center"></checkbox><checkbox id="音效" text="音效" gravity="center"></checkbox></vertical></vertical>
);
7. 设置输入框和复选框监听事件
ui.一次旋转度数.addTextChangedListener(new android.text.TextWatcher({afterTextChanged: function (text) {let content = text.toString();if (一次旋转度数正则校验(content)) {一次旋转度数 = parseInt(content);} else {log("颜色正则校验 不通过");log(content);}},})
);ui.音效.on("check", (checked) => {if (checked) {打开音效();} else {关闭音效();}
});
8. 画红眼特效
function 画红眼特效(bw, bh, eye) {let eyeCenter = eye.center;let bcx = bw / 2;let bcy = bh / 2;let 白色菱形画笔 = get白色菱形画笔();let 白色菱形path = get白色菱形path(eyeCenter.x, eyeCenter.y);let 红色菱形画笔 = get红色菱形画笔();let 红色菱形path = get红色菱形path(eyeCenter.x, eyeCenter.y, bw);ui.board.on("draw", function (canvas) {canvas.drawBitmap(mBitmap, 0, 0, null);if (ui.旋转.checked) {canvas.rotate(旋转角度, eyeCenter.x, eyeCenter.y);} else {canvas.rotate(-25, eyeCenter.x, eyeCenter.y);}if (ui.缩放.checked) {canvas.scale(动画缩放倍数, 动画缩放倍数, eyeCenter.x, eyeCenter.y);}红色菱形画笔.setColor(colors.parseColor(主色));canvas.drawPath(红色菱形path, 红色菱形画笔);白色菱形画笔.setColor(colors.parseColor("#ffffff"));canvas.drawPath(白色菱形path, 白色菱形画笔);});
}
完整源码
公众号回复 红眼特效
感谢大佬指点
@狸猫
autojs红眼特效相关推荐
- dlib实现红眼特效
效果 (图片来源网络,如有侵权请联系删除) 摘要 技术栈如下: 代码演示:python 面部关键点识别:dlib 图像处理:pillow,opencv 人脸关键点 既然是做人眼部位的贴图,需要知道人眼 ...
- C++坑人游戏[1.0版本](完)
本次如期增加: 1.Penta Kill 和 Shut Down 2.红眼特效的音乐 本次额外增加(VS版): 反Alt+F4机制 但是,我这才发现Dev-C++好像不支持多线程--所以如果是用Dev ...
- 沉睡者IT - 4种在家就能带货赚钱的直播课-视频教程目录
抖音引流培训课程视频教程讲座简介: <4种在家就能带货赚钱的直播课>人人都能直播,适合在家一个人操作! 课程内容目录: 一.直播课 01.直播赛道解析.mp4 02.测试效果型-制作产品型 ...
- 绝绝子还是YYDS,2021国民年度流行语出炉
2021年临近尾声,搜狗输入法保持传统,通过征集整理网友投稿发布#2021国民年度流行语#TOP100超级榜. 根据搜狗输入法官方微博显示,今年各大网络文学粉墨登场,缩写梗层出不穷,新闻热评和娱乐事件 ...
- 【Linux】Ubuntu 可以不用安装 yum
欢迎来到博主 Apeiron 的博客,祝您旅程愉快 !时止则止,时行则行.动静不失其时,其道光明. 目录 1.缘起 2.yum 命令和 apt 命令 3.总结 1.缘起 最近在 Bi ...
- autojs某音霓虹特效
牙叔教程 简单易懂 效果展示 缘起 群里有人问某音的霓虹特效怎么做, 并发了图片, 看着还有点意思, 就研究了一下 autojs版本 9.0.4 思路 你将学到以下知识点 初始化opencv open ...
- C# vb .net实现消除红眼效果
在.net中,如何简单快捷地实现Photoshop滤镜组中的消除红眼效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...
- c语言给bmp图片加滤镜,图片编辑器PixelStyle: 图像处理,滤镜特效
图片编辑器PixelStyle: 图像处理,滤镜特效 支持系统 OS X 10.8 价格 0 下载次数 590 官方网站 *不要错过"超级抠图",一键抠图工具,从此告别PS的蜗牛抠 ...
- aardio - paint图片特效处理
利用 paint 库 effect 功能进行图片特效处理: 1.原图: 2 .模糊处理(对图片的左边一半进行模糊处理): 关键代码: p.effect.blur(30,false,::RECT(0,0 ...
最新文章
- 【摄像头】宽动态范围
- linux 同步方法剖析,Linux 同步方法剖析
- React-Native中的flexbox布局的使用
- 一个C/C++程序从编译到最终生成可执行文件的全过程分析
- win8如何在已安装多系统的情况下,更改默认开机系统
- 云炬随笔20210803
- HDU 1814 Peaceful Commission
- javascript数组浅谈1
- Unity URP一分钟实现遮挡透视
- Activiti 手工任务(manualTask)
- 新浪搜索Tabpage
- PAT1030.——完美数列
- 演示:取证分析IPV6组播地址的构成原理
- tbschedule 前后置处理器、定期执行任务
- 怎么在国内创建谷歌账号_如何在Google相册中创建和共享协作相册
- PV、UV、UIP、VV、CPC、CPM、RPM、CTR是什么意思?
- 全球与中国太阳能并网逆变器市场深度研究分析报告
- Java---设计【运动会成绩管理系统】
- 用最新版的Android Studio和Gradle把自己开发的Android包发布到JitPack上
- python导入库的简便方法