当前位置: 首页>>技术教程>>正文


使用Jpegoptim在Ubuntu中优化JPEG/JPG图像

,

如今,诸如智能手机和数码相机之类的照片捕捉设备的图像分辨率能力正在日趋提高。真正的交易是当我们必须共享这些图像,将它们上传到云设备上,或者甚至将它们保存在存储空间有限的设备上时。图形设计师也必须处理相同的问题,但是他们是well-equipped,具有可以压缩图像的工具,以便可以轻松地与涉众共享。

对于Ubuntu,有许多图形实用程序可让您优化和压缩jpeg,但是在这里,我们将讨论称为Jpegoptim的命令行工具。这对于希望使用最少的系统资源来执行任务的Terminal-savvy尤其有用。 Jpegoptim可以帮助您压缩jpeg,jpg和jfif文件,而无论是否有质量损失,这取决于您要查找的内容。

在本文中,我们将描述如何在Ubuntu上安装命令行实用程序Jpegoptim。我们还将说明使用此应用程序优化和压缩jpeg图像文件的各种方法。本文还将使您能够编写和执行bash脚本,该脚本将自动压缩位于单个目录中的所有jpeg的过程。

我们已经在Ubuntu 18.04 LTS系统上运行了本文中提到的命令和过程。

在Ubuntu上安装Jpegoptim

Jpegoptim可通过官方Ubuntu存储库轻松获得,并可使用apt-get命令通过命令行轻松安装。

通过系统应用程序启动器搜索或通过Ctrl + Alt + T快捷方式打开终端应用程序。

下一步是通过以下命令更新系统的存储库索引:

$ sudo apt-get update

Update Ubuntu Package Lists

这可以帮助您从Internet安装软件的最新可用版本。请注意,只有授权用户才能在Ubuntu上添加,删除和配置软件。

现在您可以安装Image Jpegoptim了。您可以通过以sudo运行以下命令来执行此操作:

$ sudo apt-get install jpegoptim

Install jpegoptim

系统可能会询问您sudo的密码,并且还会为您提供一个Y /n选项以继续安装。输入Y,然后按Enter;该软件将安装在您的系统上。但是,该过程可能需要一些时间,具体取决于您的Internet速度。

您可以通过以下命令检查应用程序的版本号,并验证它是否确实已安装在系统上:广告

$ jpegoptim --version

Check installed jpegoptim version

使用Jpegoptim进行图像压缩

现在,让我们通过以下使用Jpegoptim的方式来使用它:

无损压缩单个图像

如果要压缩单个图像而又不影响质量,请使用以下命令:

$ jpegoptim image_name.jpg

例:

$ jpegoptim sample.jpg

Optimize a JPEG image file

注意:请记住,该工具会覆盖现有图像,因此最好将原始图像保存在其他位置。

如果要进一步压缩图像,可以再次运行同一命令。但是,如果Jpegoptim达到压缩率最高且无损图像质量的极限,它将开始跳过压缩。

在这种情况下,输出如下所示:

File is already optmized

将图像压缩到另一个文件夹

如果担心由于Jpegoptim覆盖原始图像而丢失原始图像,则可以告诉该工具将压缩图像保存到另一个文件夹。

首先,创建一个文件夹,您要在其中保存压缩图像。如果要将它们保存到现有文件夹中,则无需创建新文件夹。然后,您可以使用以下命令语法执行压缩:

$ jpegoptim -d ./[destination-folder] -p [image_name] .jpg

例如:

$ jpegoptim -d ./compressed -p sample.jpg

Save compressed file to different folder

上面的命令将压缩我的sample.jpg文件并将其保存到名为“compressed”的现有文件夹中。

检查潜在压缩

如果您想事先查看可以压缩多少图像,可以通过Jpegoptim模拟图像压缩。以下命令实际上不会压缩图像,它只会告诉您如果尝试使用Jpegoptim压缩图像,图像将被压缩多少。

以下示例将进一步说明该过程:

我有一个名为sample.jpg的jpg图像。我将首先通过du命令打印其大小,如下所示:

$ du sample.jpg

然后,我将在jpegoptim命令中使用-n标志,以了解其潜在的压缩方式。

$ jpegoptim -n sample.jpg

Check how much a JPEG file can be compressed

在使用上述jpegoptim命令后重新检查其大小时,我发现其大小没有变化。这样可以确保带有-n标志的jpeg命令仅显示将来的压缩百分比和大小,而不会实际压缩图像。

压缩图像“with”质量下降

有时我们会压缩图像,因为知道该过程将不会造成任何损失。好消息是,使用Jpegoptim,您可以指定可以减少多少质量损失。您可以通过两种方式“lossily”压缩图像。

1.使用-m标志指定质量因子/百分比:设置最大图像质量因子(禁用无损优化模式,默认情况下启用)。此选项将降低使用较高质量设置保存的源文件的质量。当文件的质量设置较低时,将使用无损优化方法压缩文件。

您可以通过以下方法指定压缩百分比:

$ jpegoptim -m[percentage_in_numbers] image.jpg

Lossy compression of JPG files

这是我的原始图片:

Original image sample

这就是10%品质因数的样子:

10% quality factor of jpg compression sample

2.使用–size选项指定压缩图像的大小:尝试将文件优化为给定大小(禁用无损优化模式)。目标大小指定为千字节(1 – n)

或占原始文件大小的百分比(1%-99%)。

这是您可以指定结果图像大小(以kbs为单位)的方法:

$ jpegoptim --size=[size-in-kb] image_name.jpg

Define size of optimized image

批量优化图像文件

您可以使用多种方式使用Jpegoptim一次压缩多个文件。

第一个是使用单个jpegoptim命令指定要压缩的所有文件,如下所示:

$ jpegoptim file1.jpeg file2.jpg file3.jpg

该命令将用新压缩的文件覆盖所有指定的文件。

第二种方法是告诉Jpegoptim压缩特定类型的所有文件,例如jpg,它们都位于同一文件夹中:

$ jpegoptim *.jpg

为了查看此命令的工作方式,我使用-l标志列出了Pictures文件夹中的所有文件。此命令将打印当前文件夹中所有图像的总大小:

$ ls -l

List of photos that shall be optimized

然后,我使用相同的ls -l命令来查看Jpegoptim命令对所有文件的总大小有多少不同。您可以在以下输出中看到总字节数的显著差异:

Optimize all jpg files in a folder

这些只是两个文件。这样您可以节省很多空间。整个过程的美妙之处在于,您不会牺牲有价值的图像的质量。当然,您可以对Jpegoptim支持的其他文件格式执行相同的操作。

第三个也是一个非常有用的选项,您甚至可以利用Shell脚本来自动压缩位于当前目录中的单一类型的所有文件。这样做的方法如下:

Bash脚本压缩当前目录中的所有jpg文件

本节将说明如何编写Shell脚本,该脚本将当前目录中的所有jpg压缩到名为“compressed”的文件夹中。该脚本不会创建该文件夹。它将使用此名称将输出保存到已创建的文件夹中。

首先,移至Documents文件夹,在其中创建脚本:

$ cd Documents

注意:您可以将脚本保存在任意位置。建议您在同一文件夹中创建所有脚本,以免丢失对其保存位置的跟踪。我个人更喜欢将所有脚本保存在“文档”文件夹中。

创建脚本

在您喜欢的文本编辑器之一中打开一个新的脚本文件。我们将使用nano编辑器来打开一个名为compressAll.sh的空脚本文件。

$ nano compressAll.sh

在该空文件中,添加以下脚本。

#!/bin/sh
# compress all *.jpg files in the current directory
# and place them in ./compressed directory
# with the same modification date as original files.

for i in *.jpg; do jpegoptim -d ./compressed -p "$i"; done

小费:无需将整个脚本键入到您的bash文件中,您可以从此处复制它并通过使用Ctrl + Shift + V或右键单击菜单中的“粘贴”选项粘贴到终端中。

这是您文件的外观:

Jpeg batch optimization script

现在,通过Ctrl + X快捷键退出文件。然后,将要求您将文件保存在“保存修改后的缓冲区?”上。提示。输入Y,然后按Enter;您的脚本文件现在保存在当前文件夹中。

为了使当前用户可执行此文件,请在终端中运行以下命令:

$ chmod +x compressAll.sh

为了运行脚本,请将当前目录更改为要压缩其jpg的目录(在我的情况下为Pictures目录)。确保目录包含名为“compressed”的文件夹。如果不存在,请在运行脚本之前创建一个。

运行脚本

最后,如下运行脚本:

$ /home/[username]/Documents/compressAll.sh

该命令将从您在其创建的文件夹中执行bash脚本。这就是您必须指定该.sh文件的完整路径的原因。

Run script

您会看到所有压缩文件都将写入“compressed”文件夹中。您可以通过以下命令对此进行验证:

$ ls compressed

所有这些都是通过Jpegoptim实用程序进行图像优化的。有关更多详细信息,您可以通过以下命令查看联机帮助页:

$ man jpegoptim

现在可以通过Internet共享图像并将其上传到带宽和存储受限制的位置,这不成问题

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11052.html,未经允许,请勿转载。