首页 > 立知

缩放,图片大小,手机?数码知识:华为3Pro儿童手表怎么放大缩小图片...?

小猫咪 立知 2022-03-22缩放   图片大小   手机

大家好,我是公众号3分钟学堂的郭立员,今天继续我们安卓按键的学习。

这一期我们来学一下如何用按键实现图片旋转和图片缩小,这两个功能可能在对接打码平台时会用到。

讲这个之前需要强调一点,以下代码都是在安卓app3.3.8版本使用。

「按键精灵安卓版」脚本实现图片旋转和缩小

按键精灵手机助手上面的命令是:

「按键精灵安卓版」脚本实现图片旋转和缩小

如果你的版本比较低,可能没有这些功能,自行升级版本。

这个Image 图像命令组涉及到一个知识点,以前没有用到过。

知识点:【图像数据】

那么什么是图像数据,它的格式是什么样的呢?

我们用一个命令演示一下:

「按键精灵安卓版」脚本实现图片旋转和缩小

我们先来“获取指定屏幕范围内图像数据 ”,这个命令有4个参数,查找区域的4个坐标值,和我们截图命令、找图命令的坐标范围是完全一样的。那么这个命令的重点是什么呢?它的返回值,以键值表形式返回所有颜色数据。

对于一个陌生的键值表,我们怎么知道它的格式呢?我来教大家一个方法:

“把键值表转成json”,然后用traceprint调试输出json。

下面看一下这个命令返回值的键值表格式:

Dim PixelData = 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 = 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 =Image.GetPicData(Path)
Dim NewPixelData= Image.GetScreenData(1,1,int(x/n),int(y/n))
For j = 1 To int(x/n)
Fori=1Toint(y/n)
        For k = 1 To 3
          NewPixelData[j][i][k]=PixelData[j*5][i*5][k]
        Next
    Next
Next
Image.SavePixelDataNewPixelData,NewPath

效果展示:

「按键精灵安卓版」脚本实现图片旋转和缩小

代码里面有个缩放倍数变量,你可以直接修改成你需要的倍数,原本想把截图缩放也写一下,后来想想,那不就是先截图保存下来,然后在把图片缩放吗,原理都一样,就没必要写了。

相关阅读:

  • ps如何缩放(ps如何缩放比例)
  • 如何缩放打印(打印页面缩放)
  • 网页如何缩小(怎么样缩放网页)
  • 缩放,区域,ps?如何用ps处理文字(ps如何选中文字修改)?
  • 缩放,分辨率,比例?电脑分辨率低(电脑显示屏分辨率怎么调
    • 网站地图 | 联系我们
    • 声明:这就到-知道你所不知道登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。