大家好,我是公众号3分钟学堂的郭立员,今天继续我们安卓按键的学习 。
这一期我们来学一下如何用按键实现图片旋转和图片缩小,这两个功能可能在对接打码平台时会用到 。
讲这个之前需要强调一点,以下代码都是在安卓app3.3.8版本使用 。
文章插图
按键精灵手机助手上面的命令是:
文章插图
如果你的版本比较低,可能没有这些功能,自行升级版本 。
这个Image 图像命令组涉及到一个知识点,以前没有用到过 。
知识点:【图像数据】
那么什么是图像数据,它的格式是什么样的呢?
我们用一个命令演示一下:
文章插图
我们先来“获取指定屏幕范围内图像数据 ”,这个命令有4个参数,查找区域的4个坐标值,和我们截图命令、找图命令的坐标范围是完全一样的 。那么这个命令的重点是什么呢?它的返回值,以键值表形式返回所有颜色数据 。
对于一个陌生的键值表,我们怎么知道它的格式呢?我来教大家一个方法:
“把键值表转成json”,然后用traceprint调试输出json 。
下面看一下这个命令返回值的键值表格式:
Dim PixelData = https://www.goobye.net/Image.GetScreenData(0,0,5,5)Dim json=encode.TableToJson(PixelData)TracePrint json
返回值:
当前脚本第3行:[[[225,131,59],[225,131,59],[225,131,59],[225,131,59],[225,131,59],[225,131,59]],[[225,131,59],[225,131,59],[225,131,59],[225,131,59],[225,131,59],[225,131,59]],[[225,131,59],[225,131,59],[225,131,59],[225,131,59],[225,131,59],[225,131,59]],[[225,131,59],[225,131,59],[225,131,59],[225,131,59],[225,131,59],[225,131,59]],[[225,131,59],[225,131,59],[225,131,59],[225,131,59],[225,131,59],[225,131,59]],[[225,131,59],[225,131,59],[225,131,59],[225,131,59],[225,131,59],[225,131,59]]]
把返回值用在线格式化工具处理一下:
[[[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59]],[[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59]],[[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59]],[[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59]],[[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59]],[[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59],[225, 131, 59]]]
通过处理完的格式,可以看出返回值是三维数组 。
数组的最大下标:三维数组(5,5,2)
搞清楚了这个以后,我们就开始今天的主题了 。
(一)图片旋转(顺时针90度) 。
Dim Path1 = "/sdcard/pictures/1.jpg"Dim Path2 = "/sdcard/pictures/2.jpg"Dim PixelData = https://www.goobye.net/Image.SetRotation(Path1, 90)Image.SavePixelData(PixelData, Path2)
图片旋转的逻辑是这样的:
①读取图片数据
②顺时针旋转90度对应的数据替换
文章插图
③把图像数据生成图片
(二)图片的缩小
有时候由于手机的分辨率很大,截图得到的图片超过了打码平台要求的图片尺寸大小,导致无法上传 。
下面我们说一下缩小图片的思路:假设我们缩小n倍 。
【按键精灵安卓版 按键精灵安卓版怎么用】
①获取原图的图像数据
②每隔n个位置从图像数据中提取一个数据,组成新的图像数据,得到数据是原来的n分之一 。
③把新的图像数据生成图片
代码如下:
Dim Path = "/sdcard/pictures/f.jpg"Dim NewPath = "/sdcard/pictures/f1.jpg"dim PicSize = Image.Size(Path)Dim x=PicSize[1]Dim y=PicSize[2]Dim n=5 //缩放倍数Dim PixelData =https://www.goobye.net/Image.GetPicData(Path)Dim NewPixelData= Image.GetScreenData(1,1,int(x/n),int(y/n))For j = 1 To int(x/n)For i = 1 To int(y/n)For k = 1 To 3NewPixelData[j][i][k]=PixelData[j*5][i*5][k]NextNextNextImage.SavePixelData NewPixelData, NewPath
效果展示:
- 【游戏迷】千年之狐新星元突袭,吕布星元有隐藏福利,首个双按键英雄来袭
- 【游戏世界】千年之狐新星元突袭, 吕布星元有隐藏福利, 首个双按键英雄来袭
- 还有国产手机品牌发布按键机
- 多多买菜司机端安卓版| 多多买菜的东西是正品吗?多多买菜的东西为什么那么便宜?
- 带天猫精灵的可远程智能打印机汉印U100
- 个性按键火了
- 移速小精灵20W充电器评测 移速小布丁20w充电器评测
- 【时尚一点】可爱的小精灵,羽色艳丽多彩的小翠鸟
- 【游戏世界】《精灵宝可梦》空间队的最佳输出手,超甲狂犀垫底,嘎啦嘎啦第三
- 【游戏世界】《精灵宝可梦》秘传招式被取消,这些招式还有用吗?