• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[教程心得] [按键精灵]教你如何压缩图片的体积(文件大小) [复制链接]

1#

大家好,我是郭立员~

前言

和他们聊天的时候谈到一个问题,就是如何不改变图片尺寸的情况下,压缩图片的体积,使其文件变小。

一、图片体积变小的原理。

以一个10*10的图片为例,这张图片有100个像素点,如果每个像素点的颜色值都不同,那么就有100种颜色。

如果把相邻两个像素点,颜色值改成一样,图片颜色值就减少一半,图片的文件大小也会大幅减小。

也就是说,在图片尺寸不变的前提,图片中不同颜色的数量越少,图片文件越小,极端情况就是只有1种颜色,那么就是一张纯色图片。

二、通过修改颜色值来改变图片文件大小。

修改前

修改后

从感官上来说,两张图片差别不是很大,但是两个图片文件大小缺差了将近一半,修改前图片大小:467KB,修改后图片大小:260KB。

那我修改了图片中哪些颜色值?

这里我随意截取了4个像素,修改前4个像素颜色值是不同的,修改后,把像素2变成像素1的颜色,像素4变成像素3的颜色。

总结一下就是每隔2个像素,把像素颜色值改变为其前一个像素颜色值。

三、代码

  1. [hide]Import "shanhai.lua"
  2. Dim Original_path = "/sdcard/pictures/1.png"
  3. Dim New_path = "/sdcard/pictures/2.png"
  4. SnapShot Original_path, 31, 409, 689, 787

  5. Dim Original_size = ShanHai.ReadFileSize(Original_path)
  6. TracePrint "原图大小:",int(Original_size /1024),"KB"

  7. Dim PixelData =Image.GetPicData(Original_path)
  8. Dim newPixelData =Image.GetPicData(Original_path)
  9. TracePrint Len(PixelData),Len(PixelData[1])
  10. For i = 1 To Len(PixelData)
  11. For j = 1 To Len(PixelData[1])
  12. If j>2 Then
  13. newPixelData[i][j] = PixelData[i][j - ( j mod 2)]
  14. End If
  15. Next
  16. Next
  17. image.SavePixelData newPixelData, New_path
  18. Dim New_size = ShanHai.ReadFileSize(New_path)
  19. TracePrint "原图大小:",int(New_size /1024),"KB"[/hide]
复制代码

这里是相邻2个像素颜色值一样,还可以相邻3个、5个、这种颜色值相同的越多,文件大小越小。

当然除了按列去修改颜色值,还可以按行,原理一样,这里就不赘述了,不过要注意一点,如果不能同时修改行和列,要先修改完行、再修改列。

四、应用场景

比如做一些海外app的脚本,需要对接国内打码平台,由于网络原因,如果图片过大会比较卡顿,耗时比较长,所以在保证图片可识别性的前提下,适当缩小图片文件大小,可以提高图片的传输速度。


扫码免费获取我的基础教程【视频教程】
扫码下方二维码关注我的公众号:3分钟学堂

QQ交流群:936858410
2#

郭总好贴,顶一个

弱弱问下,打码平台是什么东西

3#

,

识别验证码的

扫码免费获取我的基础教程【视频教程】
扫码下方二维码关注我的公众号:3分钟学堂

QQ交流群:936858410
发新话题 回复该主题