下载了很大量的漫画,里面有一些单图体积大的过分,一张图达到十几甚至几十MB,不仅占用硬盘空间,阅读时候还需要等加载。
由于下载的漫画量很大(总体积有1TB),CPU 压缩图片的时间有些不可接受了,需要更高效的压缩图片方法。
用 GPU 加速和图片压缩搜了一圈,只找到英伟达的一个新闻和一些论文,并没有发现能直接用的软件。如果没有快速压缩图片的方法,退而求其次有没有支持命令行调用的图片压缩软件?至少可以写个脚本筛选体积过大的图片进行压缩。
下载了很大量的漫画,里面有一些单图体积大的过分,一张图达到十几甚至几十MB,不仅占用硬盘空间,阅读时候还需要等加载。
由于下载的漫画量很大(总体积有1TB),CPU 压缩图片的时间有些不可接受了,需要更高效的压缩图片方法。
用 GPU 加速和图片压缩搜了一圈,只找到英伟达的一个新闻和一些论文,并没有发现能直接用的软件。如果没有快速压缩图片的方法,退而求其次有没有支持命令行调用的图片压缩软件?至少可以写个脚本筛选体积过大的图片进行压缩。
你试试这个呢:
另外,据说 WinZIP 支持 GPU:
如果存在受支持的显卡,则此选项将可用。如果您希望 WinZip 使用 GPU 内存,请选中该复选框。这将提高 WinZip 在某些操作中的性能。
jpg 格式的图片可以用 jpegoptim 压缩,是命令行软件。
换个思路,转换为webp如何
https://zhuanlan.zhihu.com/p/370085171
有损压缩 WebP 压缩率不如 AVIF,质量不如 AVIF,若要在保持画质的同时减少文件的大小,选择 AVIF 是更为明智之举
转为 AVIF 再打用 DwarFS 打包,前后夹击,压扁它
试了一下,DwarFS 对图片没有什么压缩了
对于漫画,有损压缩不可避免地会损失一点点质量,这个在对比之下很容易看出来,当然压缩之后体积会小很多。
不太计较无损的情况下可以直接使用JPEG转换压缩,工具很多mozjpeg之类的随便找一个,速度非常快,而如果要考虑无损压缩,那速度就慢多了,oxipng之类的工具可以做无损,但速度非常感人。
至于更换其他格式或者编码,可以自行考虑,avif我个人不推荐,一来除非你的硬件非常新,支持av1的硬件编解码,否则就是痛苦折磨,二来不喜欢jpeg,那也可以用jxl,反正目前的支持度都一样的烂,但速度要比avif好太多。
通用的压缩软件对图片来说基本没什么用
avif很多阅读器不支持,webp 不仅体积小而且支持更好一些,一段时间内我都是把图片转成 webp。但是这些压缩都太慢了,我用的是 caesium image compressor,CPU 是 10900k,压缩几十G的图片要一个小时,大概估算一下把我的存货压缩完需要 CPU 满载好几天。
jxl 我拿 Rimage_GUI 试了一下,质量 85 体积反向增大了,不知道是不是参数问题。
因为rimage的jpegxl只支持lossless,质量参数设置是无效的,和avif属于卧龙凤雏。目前只有转换成jpeg是效率最高的,其他的都只适合折腾。
jpg 确实快不少,比 webp 快了有一倍,比 avif 更是快到不知哪里去了,压缩时甚至机械硬盘的读写速度都成瓶颈了。压缩率差些也还能接受,十几 MB 的图能压到 1 MB。
18 GB 的图片压缩用了 10 分钟左右,想把库存的图片全部压缩一遍大概要满载一两天,还是想办法写个脚本挑出体积过大的图片压一次吧。
试试avif
ImageMagick 内置了对某些OpenCL加速操作的支持。但是只支持AMD或Intel GPU。
如果要用 n卡, 可以使用 GPUJPEG
cpu压缩图片速度也还行吧,主要得用上多线程。要图形界面就用xnconvert。否则就用libvips。格式的话可以选x265编码的heic或者jpeg xl,前者有损压缩率更高,后者解码速度更快。对于jpg文件,建议直接用jpeg xl无损转换。软件可以用这个 XL Converter – Code Poems,这个支持jxl无损转码以及有损压缩,比较方便。但中文目录还得到这个软件的GitHub上翻issue打补丁。
的确webp兼容的看图软件更多,而且有不错的压缩率,但是webp的致命缺点是有明显的色差,把原图和webp叠一起切换着看就能看出来,所以我只在对质量无要求的时候用webp
gpu压缩图片没有优势,gpu本身并没有设计对图片的解码编码优化的核心和API。虽然显卡能显示图片,但是显卡处理的是处理过的贴图而不是图片本身。如果一定要显卡处理,还是要先CPU和内存读取文件,再交给gpu读取,数据在显存和gpu里转一圈,再返回给CPU和内存,最后存储到文件里,效率已经大打折扣了。
gpu可以做视频编码的硬件加速,是因为视频编码的运算量更加密集,而gpu已经内置了加速硬件单元和编码器,并且对质量做了牺牲的。
歪个楼,对于漫画这种色彩数量少(尤其是不少是灰度)的图片,JPEG是否有针对性的优化呢?或者哪种图片格式对此有优化呢?
我所知就GIF能限制色数
常见格式tiff对黑白图像有较好处理,但是tiff格式的算法类型非常多,至少在我的认知中并非能一键处理。
png也可以降低色彩数量,没有gif色板机制但是也凑合。
jpg对黑白图像没有特殊优化,但是理论上可以用yuv420甚至更低的色度抽样方式来减少色度信息,从而压缩体积。但是什么软件支持抽样算法的选择,我不清楚。
在我的印象里图片压缩主要还是吃CPU资源,多进程可能更实用一些。可能大量小文件的读写是更严重的瓶颈,我之前有个深度学习的任务,分别试过从机械硬盘读独立的图像和从固态硬盘的数据库中读数据,时间上差了近十倍
webp 压彩图确实不太行,不过漫画黑白的居多,灰度图像转成webp看不出多大区别。