怎么缩放图片(手机怎么缩小图片大小)
大家好,我是公众号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
效果展示:
代码里面有个缩放倍数变量,你可以直接修改成你需要的倍数,原本想把截图缩放也写一下,后来想想,那不就是先截图保存下来,然后在把图片缩放吗,原理都一样,就没必要写了。
p站是哪个(最新p站进入方法)P站是一个日本画师主打二次元的绘画交流社区,前天下午,很多二次元的同好发现,自己又无法登陆P站了。所谓的又指的是,之前P站的遭到有关部门的DNS污染,而不能用浏览器直接打开,而需要
丽水是哪个省(浙江丽水最受欢迎景点)盘点丽水值得去的6个景区,景色宜人让人向往,暑假游玩不要错过每个城市都会有值得观赏的地方。暑期将近,很多人也都是饱含期待终于迎来了暑假。大自然是最好的旅游景区。现如今的风景区没有古
六耳猕猴(六耳猕猴之谜)六耳猕猴(六耳猕猴之谜)很多把西游记当神话故事来看的人,一直纠结于六耳猕猴到底是个什么东西,甚至有些人纠结于最后被打死的那个到底是真是假,其实书中已经有了明确的答案了,只是很少人把
iphone5数据线(数据线种类)iphone5数据线(数据线种类)我们都知道,原装的苹果数据线动辄上百一根。关键,即便是原装,还不耐用。皮裂开了是常事充电头100多一个,还是5V1A这种5瓦充电器,关键,插头还不
给的成语(你的成语)给的成语(你的成语)成语做做为步步为营不为已甚为所欲为奋发有为不得已而为之背水为阵不贪为宝不足为奇慈悲为怀耻于为伍好为人师为鬼为蜮助纣为虐无为之治好自为之事在人为尽力而为见义勇为碌
手机消毒(手机消毒处理)手机消毒(手机消毒处理)疫情期间口罩成了紧缺的物资,大家足不出户共同抗击疫情,待在家中的小伙伴也开始了每天的定时间消毒,门把手厕所餐具衣物但是你想过没有手机是大家使用频率最高的东西
ocr软件哪个好(OCR软件排名)目前市面上各种各样的OCR软件从技术上大概可以分为两大类,离线版和云端在线版。离线版的代表如AbbyyFineReader,在线版如各大头部AI平台开放的OCR接口能力。一般在线版
数据线充电(哪款数据线充电最快?)数据线充电(哪款数据线充电最快?)网络一线牵怎么能缺少数据线然而市面上的数据线良莠不齐接触不良断裂爆皮起火烧坏等时有发生我们应该如何选购呢?深圳市消费者委员会联合开展了20款手机数
西津渡电视剧(电视剧西津渡云播)西津渡电视剧(电视剧西津渡云播)文李海涛摄影李忠何锋常瑶李海涛动画李民设计王冰关键词旧城更新戏剧产业主题旅游产业更新国家英国区位伦敦西区面积约1。6平方公里人口约978万(2018
OCR是什么(爆改ocr是什么梗)们先聊聊中文OCR的发展历程国家863计划信息领域课题组织了清华大学北京信息工程学院沈阳自动化所三家单位联合进行中文OCR软件的开发工作。至1989年,清华大学率先推出了国内第一套
投资为什么e(e投资金融量化终端)市场回调之际,主力资金做多意愿有所增强。机构重拾业绩白马三机构买入3。6亿韵达股份,韵达股份连续两天大涨,盘后居然是机构大笔扫货,这个位置机构相对安心。三日榜两机构买入5。2亿,一