牙叔教程 简单易懂

效果展示

为什么做

看到别人的头像是这种风格, 虽然我不会去修改自己的头像,

但是我想知道如何实现这样的效果,

虽然写出来了, 不过我感觉还是不完全像抖音的效果, 可能还缺点啥

环境

手机: Mi 11 Pro

Android版本: 11

Autojs版本: 9.0.10

思路

  1. 抖音的logo看起来像两张图片重叠的效果
  2. 两张图片是透明的
  3. 还加了偏移
  4. 从原图搞两张透明图片, 再叠加

你将学到以下知识点

  • 设置seekbar监听事件
  • 在seekbar监听事件中, img设置图片, 然后回收图片
  • 由于修改图片是耗时操作, 所以要放到多线程中
  • 合并透明图片
  • byte数组转换成16进制字符串
  • 判断图片类型
  • 修改mat各个通道的值
  • mat转bitmap

代码讲解

1. 导入类, 基本只要你在autojs使用opencv就会用到这些类
console.time("导入类");
runtime.images.initOpenCvIfNeeded();
importClass(org.opencv.core.MatOfByte);
importClass(org.opencv.core.Scalar);
importClass(org.opencv.core.Point);
importClass(org.opencv.core.CvType);
importClass(java.util.List);
importClass(java.util.ArrayList);
importClass(java.util.LinkedList);
importClass(org.opencv.imgproc.Imgproc);
importClass(org.opencv.imgcodecs.Imgcodecs);
importClass(org.opencv.core.Core);
importClass(org.opencv.core.Mat);
importClass(org.opencv.core.MatOfDMatch);
importClass(org.opencv.core.MatOfKeyPoint);
importClass(org.opencv.core.MatOfRect);
importClass(org.opencv.core.Size);
importClass(org.opencv.features2d.DescriptorMatcher);
importClass(org.opencv.features2d.Features2d);
importClass(org.opencv.core.MatOfPoint2f);
importClass(android.graphics.Bitmap);
importClass(org.opencv.android.Utils);
importClass(java.lang.StringBuilder);
importClass(java.io.FileInputStream);
importClass(java.io.File);
console.timeEnd("导入类");
2. 界面
ui.layout(<vertical><img id="img"></img><text id="info" textSize="22sp" textColor="#fbfbfe" bg="#00afff" w="*" gravity="center">牙叔教程</text><horizontal margin="8"><text>画笔透明度: </text><text id="paintAlphaValue">0</text><seekbar id="paintAlphaSeekbar" margin="9" w="*"></seekbar></horizontal><horizontal margin="8"><text>图片透明度: </text><text id="channelAlphaValue">0</text><seekbar id="channelAlphaSeekbar" margin="9" w="*"></seekbar></horizontal><horizontal margin="8"><text>图片偏移: </text><text id="offsetValue">0</text><seekbar id="offsetSeekbar" margin="9" w="*"></seekbar></horizontal></vertical>
);
3. 设置监听
ui.channelAlphaValue.setText(String(channelAlpha));
ui.channelAlphaSeekbar.setMax(255);
ui.channelAlphaSeekbar.setProgress(channelAlpha);
ui.channelAlphaSeekbar.setOnSeekBarChangeListener({onStopTrackingTouch: function (seekBar) {let progress = seekBar.getProgress();let lastImg = currentImg;ui.channelAlphaValue.setText(String(progress));channelAlpha = parseInt(progress);ui.post(function () {threads.start(function () {currentImg = updateImg();});lastImg.recycle();});},
});
4. 修改图片
function updateImg() {let modifiedMat = modifyChannelValue(mat);let modifiedBitmap = mat2bitmap(modifiedMat);modifiedMat.release();let modifiedMat2 = modifyChannelValue2(mat);let modifiedBitmap2 = mat2bitmap(modifiedMat2);modifiedMat2.release();let newImg = merge(grayBitmap, modifiedBitmap, modifiedBitmap2);ui.img.setImageBitmap(newImg.bitmap);modifiedBitmap.recycle();modifiedBitmap2.recycle();return newImg;
}
5. mat转bitmap
function mat2bitmap(mat) {let width = mat.width();let height = mat.height();let bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);Utils.matToBitmap(mat, bitmap);return bitmap;
}
6. byte数组转换成16进制字符串
function bytesToHexString(src) {let stringBuilder = new StringBuilder();if (src == null || src.length <= 0) {return null;}for (let i = 0; i < src.length; i++) {let v = src[i] & 0xff;let hv = java.lang.Integer.toHexString(v);if (hv.length < 2) {stringBuilder.append(0);}stringBuilder.append(hv);}return stringBuilder.toString();
}
7. 释放资源
events.on("exit", function () {ui.post(function () {img.recycle();grayBitmap.recycle();grayImg.recycle();currentImg.recycle();log("退出回收资源");});
});

名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问
— 牙叔教程

声明

部分内容来自网络
本教程仅用于学习, 禁止用于其他用途

bilibili

牙叔教程

微信公众号 牙叔教程

QQ群

747748653

完整源码

autojs模仿抖音logo效果相关推荐

  1. 微信小程序完成简单的模仿抖音点赞效果动画wx.createAnimation

    先看看效果图吧 很明显主要有两个重点 (1)是点击任意地方赞的按钮就在哪里出现 (2)是放大缩小 先看wxml吧 <view wx:if="{{swiperappear}}" ...

  2. 学习uniapp 在App端模仿抖音刷视频效果

    uniapp小白,模仿抖音首页的刷视频功能, uniapp插件市场有很多,但是爱好摸鱼的我,也想试一试其他方法 上面是效果图(样式比较潦草,没有仔细写) 一开始想得比较简单,上下滑动的效果用uni内置 ...

  3. InkScape绘制抖音LOGO的教程

    InkScape绘制抖音LOGO的教程 班级:计科1713班 学号:02210171326 姓名:王艺皓 步骤: 1.将文件->文档属性中的网格单位改为px,关闭显示页面边界.将视图中改为自定义 ...

  4. CSS技巧:单标签实现抖音LOGO。

    关键点 主要借助了两个伪元素实现了整体结构,借助了 drop-shadow 生成一层整体阴影 drop-shadow 只能是单层阴影,所以另一层阴影需要多尝试 contrast(150%) brigh ...

  5. CSS3动画解析抖音 LOGO制作

    为什么80%的码农都做不了架构师?>>>    前言 "字节跳动"现今也是如日中天,旗下产品,除头条外,还有短视频平台"抖音",人气也是非常高 ...

  6. 仅用一个HTML标签,实现带动画的抖音LOGO

    大家好,我是零一,今天给大家表演 仅用一个HTML标签实现带动画的抖音LOGO,涉及了很多知识点,欢迎交流讨论 先上结果,最终实现效果如下: 还原度应该还可以吧? 抖音Logo结构 想要用CSS来画抖 ...

  7. 仅用一个 HTML 标签,实现带动画的抖音 Logo

    作者 | 零一 来源 | 前端印象 今天给大家表演 仅用一个HTML标签实现带动画的抖音LOGO,涉及了很多知识点,欢迎交流讨论 先上结果,最终实现效果如下: 成品图 还原度应该还可以吧? 抖音Log ...

  8. 干货 | 抖音漫画效果解密

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 抖音漫画效果 要说最近抖音最火的效果 ...

  9. 基于android的高仿抖音,Android仿抖音列表效果

    本文实例为大家分享了Android仿抖音列表效果的具体代码,供大家参考,具体内容如下 当下抖音非常火热,是不是也很心动做一个类似的app吗? 那我们就用RecyclerView实现这个功能吧,关于内存 ...

最新文章

  1. Java后端职业规划,附学习笔记+面试整理+进阶书籍
  2. C语言 浮点数从0递增至1.0的过程
  3. Android开发——跟随手指的小球实现
  4. 全球及中国生物质能利用产业现状调研及十四五建设布局规划报告2021-2027年
  5. CVPR 2019笔迹识别论文:逆鉴别网络+八路Attention
  6. python阿里巴巴排名_python使用urllib模块和pyquery实现阿里巴巴排名查询
  7. 米聊关停;抖音支付正式上线;谷歌禁用第三方 Chromium 同步功能 | 极客头条
  8. module 'bit' not found:No LuaRocks module found for bit
  9. wmware 安装xp系统虚拟机
  10. 【解决方案】数字孪生智慧光伏电站三维可视化系统
  11. OBLOG Accesss 转SQL Server 常见问题及解决方法
  12. 飞凌嵌入式-基于国产A40i核心板-医用呼吸机解决方案
  13. 使用长角牛演示:防止ARP协议被攻击原理和配置
  14. 信息学奥赛一本通1176题——谁考了第k名
  15. 基于Canal+kafka监听数据库变化的最佳实践
  16. oracle中12560,Oracle ORA-12560解决方法
  17. 基于Python改变图片像素大小
  18. JAVA水晶花数_【原创】JAVA中令人眼花撩乱的数字魔法
  19. C + + 课程设计之服装信息管理系统。①代码分析(含有源码)
  20. 手机adb调试出现Not running as root. Try“adb root“ first.

热门文章

  1. python里enumerate函数_python中的enumerate函数
  2. ubuntu 安装 opencv
  3. 论文笔记:Utilizing BERT for Aspect-Based Sentiment Analysis via Constructing Auxiliary Sentence
  4. Win10自带邮件添加Gmail
  5. 放开那三国服务器维护时间,放开那三国公告:停服更新维护
  6. [笔记]华为基础命令
  7. 怎么处理开机技嘉主板出现NO bootable device is detected
  8. 计算机中blank的作用,电脑打开浏览器总是出现about:blank的处理方法
  9. 360隔离mysql恢复_MySQL远程连接丢失问题解决办法
  10. org.junit.runners.model.InvalidTestClassError异常解决