如何压缩图像?


Answers:



46

在这个问题中,“压缩”一词似乎被误解了,但是根据您希望看到的上下文,它仍然有效。

风景

让我们面对一下,如果我们直接在真实的生产环境中工作,Web设计人员,Web开发人员和/或Web管理员需要“压缩”我们的图像文件,以使其具有足够的“轻量级”,以便快速上传到我们的主机。如果我们在本地测试生产环境中工作,这不会影响。

许多答案似乎都指向其他事物,这主要是由于-可能-他们没有遇到过这样的风景。这就是为什么我开始解释这一点。

所以。让我们了解答案需要解决的问题:

  1. 图片必须轻巧
  2. 图片必须“压缩”以便丢失文件大小,但不能像另一位用户指出的那样“重新调整大小”,该用户指向此问题上的重复JPG批处理压缩并重命名(查找-exec,xargs,管道?)。
  3. 图片应该被批量压缩,最好通过GUI。

轻量级图片

首先让我们了解什么是“轻量级图片”。

分辨率超过1024像素的高清晰度图片可能具有较大的文件大小。我在此屏幕截图上提供了一个示例:

在此处输入图片说明

在此处输入图片说明

在文件属性窗口中,我们可以看到这是一个9.5 MB的文件,在网站上发布时,它会延迟很多上传时间,并且会延迟很多时间才能在屏幕上呈现。

但是,图像尺寸和网格分辨率对于高清打印确实有用。因此,这是另一种风景,在本说明中将不涉及。

那么,如何在网站中使用该图像,而又不用等待几年才能上传并等待其他年份才能在我的网站中显示它?

该文件应被压缩。

当我们谈论“压缩”时,我们明确需要更改其质量,以使其可用于我们面临的情况。

因此,让我们在终端中放置下一个:

convert seminario-tabloide.png test.jpg

这将把高清PNG格式转换为“压缩” JPG格式,它本身是一个较小的文件!它从9.5 MB变为2.4 MB。

在此处输入图片说明

还大吗?

但是,2.4 MB的文件仍然很大。现在让我们使用其他一些ImageMagick 转换命令来创建较小的文件大小:

convert test.jpg -quality 50% test-50p.jpg

这是我们为了“压缩”图像而需要做的。这将使图像质量降低50%,并提供938.4 KB <===(请注意:KILOBYTES,甚至不是兆字节)文件大小。

我们可以通过以下命令在同一命令中调整百分比来进一步创建较小的文件大小:

convert test.jpg -quality 30% test-30p.jpg

请记住,在此示例中,我们要降低文件质量,而不是图像尺寸。这将导致压缩的文件在屏幕上呈现时不会受到视觉影响,但是在以大纸张尺寸(大于信纸)打印时,您会看到伪像。

调整大小+压缩=超酷!

现在。我们可以做另一件事。确实有两件事:我们可以先调整图像大小,然后再应用压缩,这将导致文件大小比原始文件小,并且将提供有用的图像以在屏幕上呈现,但不太适合打印,但看来我们需要在屏幕上而不是在印刷的横幅上显示,对吗?

因此,让我们这样做:

convert seminario-tabloide.png -resize 1024x test-1024x.jpg

通过此指令,我们要求将图像调整大小为1024像素,宽为所需的任何数量的像素,以免丢失宽高比。

现在...猜怎么着?

文件大小从9.5 MB减少到...(请使用congas 暂停音乐)433.7 KILOBYTES

如果我们希望最大程度地压缩这样的最大压缩文件,我们将面临文件中插入的一些开销数据,这将导致更大的文件大小。因此,我不建议您尝试,但是如果您希望我做这个例子,好吧...我们来了!

convert test-1024x.jpg -quality 50% test-1024x-50p.jpg

而且,在单个命令中,我们从433.7 KB增长到了176.2 KB。这个例子很成功,但是不要期望任何练习都会导致文件变小。但是,进行此类练习时,您会获得很多乐趣。

批处理

哦! 但我几乎忘记了其中一项需求:轻松地将此过程应用于大量图片。

为此,我们可以通过两个过程来完成。

终点站

这更快,更容易。因此,让我们告诉终端我们需要在目录中的所有文件中运行相同的指令,然后再解释其他指令。

全部转换为1024像素(您可以使用任何像素量)

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 Actions脚本以简单地右键单击文件组并选择上下文菜单中的一个选项。

有关如何执行此操作的说明,请在此处阅读问题,答案和评论:如何使用Nautilus-Actions批处理JPG图像以改变其质量?

祝好运!


1
这就是“教我钓鱼”的答案。ImageMagick convert命令行技能很棒。
Charney Kaye

固体!我在多光标模式下使用Sublime Text文本编辑器快速快速更改了一系列命令,以“批量”压缩一堆照片。我只是使用了convert photo.jpg -quality 70% photo_compressed.jpg命令格式,所以效果很好!甚至将压缩率设置为原始质量的70%,由于将照片的x和y轴都放大了,因此照片尺寸也减小为原始照片的〜37%。
加布里埃尔·斯台普斯

对如此经常被误解的概念的奇妙解释。为了完整起见,让我补充一下,对于批处理,您还可以使用ImageMagick的mogrify而不是转换,我在其中创建一个文件夹来保存结果,然后只处理到该文件夹​​中也可以使事情井井有条。例如mogrify -resize 1600 -path dir_name -format JPG -quality 90 *.tif
丹尼斯

0

如果您指的是jpeg图像,则实际上无法进行压缩。因为jpeg 定义为压缩文件格式(所有噪点和无用像素已被删除)。您可以压缩它们,但是总大小将保持不变。我知道的jpeg唯一高级压缩算法是zipx。但是zipx是Winzip专有的,可以确保最大数量。大小减少30%(在zipx存档模式下)。

要在网络上显示图片,请先调整图片大小(每张图片小于1MB),然后选择将其转换为png文件格式。PNG(=便携式网络图形)经过特别优化,可实现更快的Web传输和更快的显示速度。高级用户甚至可以将这些图像转换为webp格式(Google的图片格式,最快的加载算法)。

您可以使用XnConvert批量转换图片,然后使用XnView批量调整图片大小。从以下位置下载deb软件包:http : //www.xnview.com/de/xnviewmp/#downloads,然后右键单击它并使用Gnome Software打开它。

如果您不在乎网络加载速度,但在乎质量,则应保持图像不变,并为其创建数字库。也许将它们上传到公共服务器(Yahoo,Google等)上。


3
您可能要提到jpeg压缩/质量的各种选项;通过提高jpeg图像的压缩率(从而降低其质量)来减小jpeg图像的文件大小是很有可能的。
尼克·温伯格

1
我对压缩的理解意味着消除不必要的像素,同时保持相同的质量。降低质量并不是压缩,它只是缩小尺寸或降低采样率。使用zipx格式可以进行无损压缩,该格式非常适合连拍照片。它会创建某种类似的照片叠加/叠加堆,其中所有双像素都在单独的图层上展平,类似于网页中的.css文件。重复像素被定义为档案中的单独实体。
ipse lute 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.