我有 5,000 张图片需要压缩(以便在我的网站上显示)。
我是 Ubuntu 新手。我该怎么办?
答案1
这个问题中的“压缩”一词似乎被误解了,但根据您希望看到的上下文,它仍然有效。
风景
如果我们直接在实际生产环境中工作,那么 Web 设计师、Web 开发人员和/或 Web 管理员需要“压缩”我们的图像文件,以便使它们足够“轻量”,以便快速上传到我们的托管服务器。如果我们在本地测试生产环境中工作,这不会产生影响。
很多答案似乎都提到了其他事情,主要是因为他们可能没有见过这样的场景。这就是我开始解释这一点的原因。
那么,让我们了解一下答案需要解决什么:
- 图片必须轻量
- 图片必须“压缩”才能减小文件大小,但不能“重新调整”,正如另一位用户指出的这个问题上的重复内容JPG 批量压缩和重命名(查找 -exec、xargs、管道?)
- 图片应该被批量压缩,最好通过 GUI。
轻量级图片
我们先来了解一下,什么才是“轻量级图片”。
高清图片,分辨率超过 1024px 的文件大小可能会很大。我在此屏幕截图上提供了一个例子:
在文件属性窗口中,我们可以看到这是一个 9.5 MB 的文件,上传需要很长时间,而且在网站上发布时,在屏幕上呈现也需要很长时间。
不过,图像尺寸和网格分辨率对于高清打印确实很有用。所以这是一个不同的场景,我不会在这篇解释中涉及。
那么,我如何在网站上使用此图像,而不用等待数年才能上传,再等待几年才能在我的网站上显示它?
该文件应该被压缩。
当我们谈论“压缩”时,我们明确需要改变它的质量,以使其适用于我们所面临的情况。
那么,让我们在终端中输入以下内容:
convert seminario-tabloide.png test.jpg
这会将高清 PNG 格式转换为“压缩”的 JPG 格式,其本身就是一个较小的文件!大小从 9.5 MB 变为 2.4 MB。
还大吗?
但 2.4 MB 还是很大的文件大小。现在让我们来玩一些其他图像魔术师 转变命令以创建较小的文件大小:
convert test.jpg -quality 50% test-50p.jpg
这就是我们需要做的“压缩”图像。这将使图像质量降低 50%,并产生 938.4 KB <===(注意:千字节,甚至不是兆字节)的文件大小。
我们可以进一步通过以下方式调整同一命令中的百分比来创建更小的文件大小:
convert test.jpg -quality 30% test-30p.jpg
请记住,在此示例中,我们降低了文件的质量,而不是图像尺寸。这将导致压缩文件在屏幕上呈现时不会受到视觉影响,但在大纸张尺寸(大于信纸)上打印时,您会看到伪影。
调整大小 + 压缩 = 超级酷!
现在,我们可以做些不同的事情。确实有几件事:我们可以先调整图像大小,然后应用压缩,这样文件大小会比原始文件小,并且会提供有用的图像以在屏幕上渲染,虽然不太适合打印,但似乎我们需要在屏幕上显示它,而不是在打印的横幅上,对吗?
因此让我们这样做:
convert seminario-tabloide.png -resize 1024x test-1024x.jpg
通过此指令,我们要求将图像大小调整为 1024 像素宽,并根据需要调整像素数量,以免丢失纵横比。
现在...猜猜是什么?
文件大小从 9.5 MB 减小到...(请播放带有康加鼓的悬疑音乐)433.7 千字节
如果我们希望最大程度地压缩像这样的最大压缩文件,我们将面临文件中插入一些开销数据,这将导致文件大小更大。所以我不建议你尝试,但如果您希望我做这个例子,好吧...我们开始吧!
convert test-1024x.jpg -quality 50% test-1024x-50p.jpg
我们去了从 433.7 KB 变为 176.2 KB只需一个命令即可。此示例成功了,尽管如此,不要指望任何练习都能使文件大小变小。但是,运行此类练习时,您可以获得很多乐趣。
批处理
哦!但我几乎忘记了其中一个需求:轻松地将此过程应用于大量图片。
对于这样的事情,我们可以用两个过程来完成。
终点站
这样更快、更简单。所以我们告诉终端我们需要在目录中的所有文件中运行相同的指令,之后我会解释其他指令。
全部转换为 1024px(您可以使用任意像素数量)
for i in *; do convert $i -resize 1024x $i-1024x.jpg; done;
这里我们要求命令对目录中的所有文件运行相同的指令,应用转换并删除具有不同名称的副本,以便于选择。
按百分比降低目录中所有图片的质量(可以使用任意百分比):
for i in *-1024x.jpg; do convert $i -quality 50% $i-50p.jpg; done;
这里我们要求降低调整大小后的图像的质量,以使其文件大小更小。
你可以使用这些命令并查看结果。经过几个小时的乐趣,你就会成为专家。
鹦鹉螺脚本
2015 年 4 月 20 日,我遇到了与原始问题类似的情况,所以我不得不做一些研究并就一个问题寻求帮助。这就是为什么我现在知道很多这方面的内容。别以为我天生就有这些知识,伙计。
如果您不习惯使用终端和/或希望使用 GUI 来简单地选择文件组并应用转换,您可以创建自己的 Nautilus 操作脚本,以便简单地右键单击文件组并从上下文菜单中选择一个选项。
有关如何执行此类操作的说明,请阅读此处的问题、答案和评论:如何使用 Nautilus-Actions 批量处理 JPG 图像以改变其质量?
祝你好运!
答案2
答案3
答案4
你可以使用squoosh-cli。这是 Google Chrome 实验室的一个项目。
它支持多种格式和选项。它巧妙地进行压缩以减小尺寸,而无需调整大小或损失太多视觉保真度。
用法(取自其 GitHub):
Usage: squoosh-cli [options] <files...>
Options:
-V, --version output the version number
-d, --output-dir <dir> Output directory (default: ".")
-s, --suffix <suffix> Append suffix to output files (default: "")
--max-optimizer-rounds <rounds> Maximum number of compressions to use for auto optimizations (default: "6")
--optimizer-butteraugli-target <butteraugli distance> Target Butteraugli distance for auto optimizer (default: "1.4")
--resize [config] Resize the image before compressing
--quant [config] Reduce the number of colors used (aka. paletting)
--rotate [config] Rotate image
--mozjpeg [config] Use MozJPEG to generate a .jpg file with the given configuration
--webp [config] Use WebP to generate a .webp file with the given configuration
--avif [config] Use AVIF to generate a .avif file with the given configuration
--jxl [config] Use JPEG-XL to generate a .jxl file with the given configuration
--wp2 [config] Use WebP2 to generate a .wp2 file with the given configuration
--oxipng [config] Use OxiPNG to generate a .png file with the given configuration
-h, --help display help for command
还有一个非常漂亮的网站与之配合:https://squoosh.app/。该网站有一个非常酷的前后预览。我建议在单张图片上使用该网站来找到好的设置,然后使用 CLI 进行批量压缩。