有没有支持GPU加速的图片压缩软件?

下载了很大量的漫画,里面有一些单图体积大的过分,一张图达到十几甚至几十MB,不仅占用硬盘空间,阅读时候还需要等加载。

由于下载的漫画量很大(总体积有1TB),CPU 压缩图片的时间有些不可接受了,需要更高效的压缩图片方法。

用 GPU 加速和图片压缩搜了一圈,只找到英伟达的一个新闻和一些论文,并没有发现能直接用的软件。如果没有快速压缩图片的方法,退而求其次有没有支持命令行调用的图片压缩软件?至少可以写个脚本筛选体积过大的图片进行压缩。

你试试这个呢:

另外,据说 WinZIP 支持 GPU:

Performance

  • Enable OpenCL GPU acceleration - If a supported video card is present, this option will be available. Check the checkbox if you would like WinZip to make use of GPU memory. This will increase the performance of WinZip in certain operations.

如果存在受支持的显卡,则此选项将可用。如果您希望 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 分钟左右,想把库存的图片全部压缩一遍大概要满载一两天,还是想办法写个脚本挑出体积过大的图片压一次吧。

细看了一下,质量比 webp 差的有点多,特别是网点,压缩完摩尔纹都出来了。


原图

jpg 压缩 80质量

webp 压缩 80 质量

试试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已经内置了加速硬件单元和编码器,并且对质量做了牺牲的。

1 个赞

歪个楼,对于漫画这种色彩数量少(尤其是不少是灰度)的图片,JPEG是否有针对性的优化呢?或者哪种图片格式对此有优化呢?
我所知就GIF能限制色数

常见格式tiff对黑白图像有较好处理,但是tiff格式的算法类型非常多,至少在我的认知中并非能一键处理。
png也可以降低色彩数量,没有gif色板机制但是也凑合。
jpg对黑白图像没有特殊优化,但是理论上可以用yuv420甚至更低的色度抽样方式来减少色度信息,从而压缩体积。但是什么软件支持抽样算法的选择,我不清楚。

在我的印象里图片压缩主要还是吃CPU资源,多进程可能更实用一些。可能大量小文件的读写是更严重的瓶颈,我之前有个深度学习的任务,分别试过从机械硬盘读独立的图像和从固态硬盘的数据库中读数据,时间上差了近十倍

webp 压彩图确实不太行,不过漫画黑白的居多,灰度图像转成webp看不出多大区别。