手机图片瘦身小脚本 Mobile Photo Slim Project
介绍
作者用的手机是Redmi K20 Pro。去年11月份之前一直用着小米云盘的黄金会员,容量50GB。后来就不用了,原因是我的图片总容量超过了50GB,升级到更高级的会员200GB空间大概每年需要300块,作为一个穷学生可承受不起,后来我的图片备份方案是上传到阿里云盘。
小米云盘很坑,但是它有一个功能非常好,就是进行图片瘦身。高清图片保留在云端,本地只留下压缩后的图。而小米官方的瘦身非常给力,原图和瘦身图几乎看不出差别。
我非常喜欢图片瘦身的功能,可惜在我不用黄金会员之后就不能再使用这个功能了。自去年11月以来,图片的总占用空间已经逼近10GB。
我便想手动撸一个瘦身脚本。
如何实现的?
利用Python的Pillow库,它Image.save
函数将默认给图片进行压缩,压缩后的容量大概是原容量的1/5
。
在用save
函数的时候,我们需要注意一个点,默认的保存不会保存原图的exif信息,exif信息记录着我们的拍摄时间、拍摄地点等信息,而exif的拍摄时间正是小米手机相册的排序方式。我们在保存的时候注意得保存exif信息。
这个脚本的具体流程大概如下。
-
adb shell ls 获取相册下的所有图片名 放到 files.txt 文件中
-
你需要手动选择 files.txt 中哪些文件需要被压缩
-
adb pull 命令把文件拉到电脑上
-
Pillow库压缩,程序会把容量大于2MB的图片进行压缩。
-
adb shell rm 删除手机上的原图
-
adb push 命令把压缩后的文件放回手机
-
adb am broadcast 发送广播,让系统相册刷新
我在实践过程中发现直接adb push一个文件到相册目录下,系统的相册无法识别到这个文件,后来查到相关资料,我们需要手动发送一个广播刷新MediaStore,才能让相册刷新,这也是第七步存在的原因。
使用方法
-
推荐在使用之前先把原图备份,比如备份到阿里云盘。因为此项目会直接替换原图为瘦身图,会删除原图。
-
确保你的手机连接到电脑并开启usb调试
-
克隆此项目,进入文件夹。
-
执行
adb shell ls /storage/emulated/0/DCIM/Camera > files.txt
命令 -
在
files.txt
中手动选择哪些你需要压缩的图片们,请务必删除掉mp4等视频文件。推荐在 files.txt 里填入少量文件先尝试一下脚本效果。如果一切顺利,请添加你需要压缩的所有图片。
-
由于
files.txt
是由cmd命令行重定向生成的,文件编码格式比较神秘,你需要在vscode中通过编码保存为utf-8格式。或者你可以把files.txt你已经选择好的文件名复制到 记事本 中,然后保存为一份新的 files.txt 。然后在替换本项目中的神秘格式的旧files.txt
-
执行
pip3 install -r requirements.txt
安装Pillow库依赖 -
执行
python3 ./slim.py
即可开启瘦身之旅。
运行截图
效果演示视频
手机图片容量变化
从瘦身之前的9.17GB变成了瘦身后的 3.81GB,总共节省出了 5.35GB。
这还只是4个月的图片。一年就可以节省出 15GB的空间。
Github链接
wuuconix/Mobile-Photo-Slim: 手机图片瘦身 (github.com)
来个Star吧2333