牙叔教程 简单易学

效果展示

autojs版本

8.8.2-0

代码简介

  1. 识别眼睛, 使用的是百度的人脸检测
  2. 在眼睛的位置, 画红眼特效, 使用了阴影, 模糊
  3. 红眼特效区域使用path.quadTo画了一个菱形曲线

get知识点

  1. 百度人脸检测token的获取
  2. 百度人脸检测
  3. 输入框监听
  4. 复选框和draw事件的交互
  5. 颜色正则校验
  6. 菱形曲线的绘制
  7. 阴影
  8. 模糊
  9. 画布旋转
  10. 画布缩放

代码讲解

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红眼特效相关推荐

  1. dlib实现红眼特效

    效果 (图片来源网络,如有侵权请联系删除) 摘要 技术栈如下: 代码演示:python 面部关键点识别:dlib 图像处理:pillow,opencv 人脸关键点 既然是做人眼部位的贴图,需要知道人眼 ...

  2. C++坑人游戏[1.0版本](完)

    本次如期增加: 1.Penta Kill 和 Shut Down 2.红眼特效的音乐 本次额外增加(VS版): 反Alt+F4机制 但是,我这才发现Dev-C++好像不支持多线程--所以如果是用Dev ...

  3. 沉睡者IT - 4种在家就能带货赚钱的直播课-视频教程目录

    抖音引流培训课程视频教程讲座简介: <4种在家就能带货赚钱的直播课>人人都能直播,适合在家一个人操作! 课程内容目录: 一.直播课 01.直播赛道解析.mp4 02.测试效果型-制作产品型 ...

  4. 绝绝子还是YYDS,2021国民年度流行语出炉

    2021年临近尾声,搜狗输入法保持传统,通过征集整理网友投稿发布#2021国民年度流行语#TOP100超级榜. 根据搜狗输入法官方微博显示,今年各大网络文学粉墨登场,缩写梗层出不穷,新闻热评和娱乐事件 ...

  5. 【Linux】Ubuntu 可以不用安装 yum

            欢迎来到博主 Apeiron 的博客,祝您旅程愉快 !时止则止,时行则行.动静不失其时,其道光明.  目录 1.缘起 2.yum 命令和 apt 命令 3.总结 1.缘起 最近在 Bi ...

  6. autojs某音霓虹特效

    牙叔教程 简单易懂 效果展示 缘起 群里有人问某音的霓虹特效怎么做, 并发了图片, 看着还有点意思, 就研究了一下 autojs版本 9.0.4 思路 你将学到以下知识点 初始化opencv open ...

  7. C# vb .net实现消除红眼效果

    在.net中,如何简单快捷地实现Photoshop滤镜组中的消除红眼效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  8. c语言给bmp图片加滤镜,图片编辑器PixelStyle: 图像处理,滤镜特效

    图片编辑器PixelStyle: 图像处理,滤镜特效 支持系统 OS X 10.8 价格 0 下载次数 590 官方网站 *不要错过"超级抠图",一键抠图工具,从此告别PS的蜗牛抠 ...

  9. aardio - paint图片特效处理

    利用 paint 库 effect 功能进行图片特效处理: 1.原图: 2 .模糊处理(对图片的左边一半进行模糊处理): 关键代码: p.effect.blur(30,false,::RECT(0,0 ...

最新文章

  1. 【摄像头】宽动态范围
  2. linux 同步方法剖析,Linux 同步方法剖析
  3. React-Native中的flexbox布局的使用
  4. 一个C/C++程序从编译到最终生成可执行文件的全过程分析
  5. win8如何在已安装多系统的情况下,更改默认开机系统
  6. 云炬随笔20210803
  7. HDU 1814 Peaceful Commission
  8. javascript数组浅谈1
  9. Unity URP一分钟实现遮挡透视
  10. Activiti 手工任务(manualTask)
  11. 新浪搜索Tabpage
  12. PAT1030.——完美数列
  13. 演示:取证分析IPV6组播地址的构成原理
  14. tbschedule 前后置处理器、定期执行任务
  15. 怎么在国内创建谷歌账号_如何在Google相册中创建和共享协作相册
  16. PV、UV、UIP、VV、CPC、CPM、RPM、CTR是什么意思?
  17. 全球与中国太阳能并网逆变器市场深度研究分析报告
  18. Java---设计【运动会成绩管理系统】
  19. 用最新版的Android Studio和Gradle把自己开发的Android包发布到JitPack上
  20. python导入库的简便方法

热门文章

  1. 【Davinci开发】:功能安全(vHSM与HOST联调)
  2. 【知识点】大数分解与素数判定 --- 【Miller-rabin算法】【pollard-rho算法】
  3. 面向对象有哪些特性?
  4. python数据库文件读写(超详解)
  5. 解释以下linux命令的含义,无法理解linux命令的输出
  6. 一些略有感触的句子和感悟
  7. Spring IoC Container 原理解析
  8. 计算机主机内部防尘装置,一种计算机主机防尘装置的制作方法
  9. iphone扫描文档jpg_如何使用iPhone的Notes应用程序扫描文档
  10. 苹果研发可弯曲电池技术 未来iOS设备会更薄更美观