如何在维持文件夹层级的基础上最快速度把大于1M的jpg图片全都变成小于1M?

目前有一个问题很困扰我: 我有一个编写博客的软件,生成的本地图片文件夹下面大概有几千张图片,文件夹是按年、按日期的,用了4年积累了至少4*365大概1200个文件夹,图片的名字没什么特殊意义(能保持原名更好),图片的分辨率(长度和宽度)有特殊的涵义不能改变。

现在我想把我的博客搬到gitee上去,换成hugo+Loveit, 用picgo批量上传图片很方便,但发现gitee不支持大于1M的图片,那么问题来了:
1、如何在维持文件夹层级的基础上最快最方便地把大于1M的图片变成小于1M?图片保存位置不能变、图片文件名可以变、图片长度和宽度不能变,可以接受图片质量下降。
2、要不要换个支持大图片的博客托管地?比如gitee pages,github pages之类的

本来我是没辙的,一直拖着没进展,昨天有篇文章
给了我很大启发,我用everything把图片根目录下面所有大于1M的图片都过滤出来了,下一步该怎么办?
1、安装一个XnView ShellEx,在everything界面,选中大于1M的图片,右键,转化。结果是:文件名加了个_01,图片质量有下降。不知道有没有更好的选择。
2. picgo安装一个插件picgo-plugin-compress,参数选择lubanforgitee,图片上传的时候自动压缩。可是我尝试多次都安装不上啊!
3. gitee pages我也研究过,似乎每上传一个文件后都要点一下“更新”才行,太繁琐了,我每写一篇博客都要更新一下吗?有没有比较方便的部署方式?我只能把极少数不适合缩小的gif图片弄到gitee pages。
4. 搬到github pages。我不多说了,我自己当然有办法访问,但别人访问不了我干嘛还费这个劲把我的博客搬家。picgo支持的几个平台我也可以一一考察一下,但是感觉这种方案有点逃避问题的感觉~

转换成 WebP 就行

利用 everything + ImageMagic 自己写个批处理

这俩都支持命令行参数.

也可以用免费软件, ROIT

RIOT 还可以作为插件集成到 The GIMP 、IrfanView 和 XnView等知名程序中

我今天已经把riot 大致汉化了一下. 有些字符串资源需要用16进制修改,就懒得搞了. 有需要的跟帖.

2 Likes

Squoosh-CLI 也可以

1 Like

虽然有点老土但是光影魔术手那个批处理支持这个(好像不支持多层级直接显示,需要自己把图片先筛选出来直接拖入)

谢谢,同一个文件夹下的简单图片压缩我会啊,XnConvert我一直在用。
零星图片压缩我就用右键XnView ShellEx。
光影魔术手就是经典的不能保持原始文件夹层级的处理方式。
我的问题的核心是1200+文件夹一口气处理大于1M的图片,位置不能变。

谢谢,我的需求确实有点特殊,因为我并不需要压缩所有图片,我只需要压缩那些大于1M的图片,感觉这个软件不能按照大小过滤,只能无差别攻 击~

谢谢,看到"filesize threshold"+“Save in original folder” 感觉就是精准针对我这种需求的,估计就是它了!
可惜roit软件我始终无法下载,等我想办法试用了以后再回复(如果有国内网盘的下载链接请给一个 ):smiling_face_with_three_hearts:

这个是可以批量进行:
http://119.91.147.129/software.html?app=photolib

输出的照片目录可以是同一目录(通过附加字符串到文件名)
或不同的目录(通过附加字符串到目录名)
方式: 原照片文件路径 缩小后的照片文件路径

  1. DIR\s\FILE.JPG 代表 DIR\FILE.JPG => DIR\s\FILR.JPG
    即把原来的d:\dir\xx.jpg,缩小到子目录s下

  2. DIRs\FILE.JPG 代表 DIR\FILE.JPG => DIRs\FILE.JPG
    即把原来的d:\dir\xx.jpg,缩小到d:\dirs目录下

  3. DIR\FILEs.JPG 代表 DIR\FILE.JPG => DIR\FILEs.JPG
    即把原来的d:\dir\xx.jpg,缩小到原目录,但是文件名加s
    (否则会覆盖原来的照片)

  4. s\FILE.JPG 代表 DIR\FILE.JPG => s\FILE.JPG
    即把原来的d:\dir\xx.jpg,缩小到任意的新目录s下
    (此时s应该是一个带盘符的完整目录,如:e:\abc)

  5. s\d-d@FILE.JPG 代表 DIR\d1\d2\FILE.JPG => s\d1-d2@FILE.JPG
    因为4)是把源目录里所有子目录的文件都转换到同一个目标目录
    如果子目录不同文件名相同,会只保留一个文件
    所以增加此模式

  6. tmpdir\d-d@FILE.JPG 代表 5)模式里如果目标文件变小了
    则覆盖原文件(原文件加.OldJpg后缀,确认不需要可以批量删除)

1 Like

转webp不就完了,反正图片小一点速度快,而且将来也要1M以下,每次都要注意烦不烦。

博客速度快了也多不了多少人,因为现在大陆软件普遍想把自己的用户关起来,要么去他们的平台。也是无解。

1 Like

汉化版(含英文原版)

谢谢分享链接,我下载好了,中文版被电脑上的杀软秒杀我连界面都没看到 :sweat_smile:,英文版可以用的,尝试了一下 发现效果很"神奇"哎,这软件居然会把小图变大,大图变小,我第一次见到!
1、 我猜测这是设置大小为1M
image image

2.包括子目录
image
3.保持原位置不变,保持文件名不变,覆盖
image
运行结果是:

我没看到你作的中文版界面,但是我用过了不少图像处理软件,第一次意识到该软件里“ filesize threshold”的意思居然是大图变小同时小图变大,涨见识了 :joy:

我搞了10张大小不一的图片,原始文件23M,处理完了以后文件名和位置都不变,真的变成10*1024KB这么大了!!
谁会想着在没有任何画质提升、分辨率不变、格式不变的情况下单纯去把一张图片的磁盘大小弄大啊?嫌弃自己的硬盘太空荡了吗?这个软件的作者我真想和你聊聊啊 :stuck_out_tongue_winking_eye:

啊,其实利用管道应该是可以的,但我不知道 Windows 下具体怎么搞…大概命令是

find xxx | cli...

这种操作一般放 Linux 下方便

不是很明白你的意思~我本来第一选择也是github pages, 没有1M的文件大小限制,单仓库 recommended limit 1G够我写博客写到地老天荒,快不快我都无所谓了但是经常访问不了。抱怨没有用,解决问题才是要紧的。

访问不了就代理呗,要么出国。
如果利用免费服务的话,可以抄别人的github actions。
如果自己家里搭建的话,找cloudflare tunnel,或者免费frp
如果花钱的话,难度会大幅下降。

image

中文版被汉化后自动压缩了. 有些杀软比如360会对任何加壳软件都误杀.

用everything 筛选所有大约1m的图片, 然后拖动到批处理界面就行了.

1 Like

问题解决了,谢谢!
用everything 筛选所有大约1M的图片,然后 ROIT 处理。
或者用everything 筛选所有大约1M的图片,直接右键XnView ShellEx->resize (此方法不能100%成功,严格来讲只是缩小图片的长和宽,不是缩小文件大小)

顺带一提,研究过程种发现XnView ShellEx的右键菜单可以自定义的,找到它的安装目录(一般来说是C:\Program Files\XnView\ShellEx),用管理员权限运行notepad.exe打开XnViewShellExt-Resize.txt,修改即可,目前支持3种合适:
长X宽 (比如1920x1080)
百分比 (比如50% 20%)
最长边 (比如2000,按照原始比例缩小,只会缩小不会放大)
我特别想查查能否设定最宽边,还有最大大小,目前没有办法~
还有evenything的列表能否自定义啊,我想要增加长和宽这两列啊


最后感叹一句,everything 真是神器,我以前大概只用到了它的功能的10%