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

当今智能手机和数码相机等照片捕捉设备的图像分辨率能力日益提高。 当我们必须共享这些图像、将它们上传到云设备上,甚至将它们保存在存储受限的设备上时,真正的交易就出现了。 平面设计师也必须处理同样的问题,但他们配备了可以压缩图像的工具,以便可以轻松地与利益相关者共享。

对于 Ubuntu,有许多图形实用程序可以让您优化和压缩 jpeg,但在这里我们将讨论一个名为 Jpegoptim 的命令行工具。 这对于喜欢使用最少的系统资源执行任务的终端用户特别有用。 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

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

现在您已准备好安装 Image Jpegoptim; 您可以通过运行以下命令来执行此操作 sudo:

$ sudo apt-get install jpegoptim

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

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

$ jpegoptim --version

检查已安装的 jpegoptim 版本

使用 Jpegoptim 进行图像压缩

现在让我们通过以下方式来探索 Jpegoptim 的强大功能:

无损压缩单个图像

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

$ jpegoptim image_name.jpg

例子:

$ jpegoptim sample.jpg

优化 JPEG 图像文件

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

如果您想进一步压缩图像,您可以再次运行相同的命令。 但是,如果 Jpegoptim 达到了最大压缩的无损图像质量的限制,它将开始跳过压缩。

以下是在这种情况下输出的样子:

文件已优化

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

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

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

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

例如:

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

Save  压缩文件到不同的文件夹

上面的命令会将我的 sample.jpg 文件压缩并保存到一个已经存在的名为“compressed”的文件夹中。

检查潜在压缩

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

下面的例子将进一步解释这个过程:

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

$ du sample.jpg

然后,我将在 jpegoptim 命令中使用 -n 标志来了解它的潜在压缩。

$ jpegoptim -n sample.jpg

检查JPEG文件可以压缩多少

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

压缩图像“有”质量损失

有时我们想压缩我们的图像,因为我们知道该过程不会是无损的。 好消息是,使用 Jpegoptim,您可以指定您可以接受多少质量损失。 有两种方法可以“有损”压缩图像;

1. 使用 -m 标志指定品质因数/百分比: 设置最大图像质量因子(禁用无损优化模式,默认启用)。 此选项将降低使用更高质量设置保存的那些源文件的质量。 而已经具有较低质量设置的文件将使用无损优化方法进行压缩。

以下是指定压缩百分比的方法:

$ jpegoptim -m[percentage_in_numbers] image.jpg

JPG文件的有损压缩

这是我的原始图像:

原始图像样本

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

jpg压缩样本的10%品质因数

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

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

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

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

定义优化图像的大小

批量优化图像文件

有几种方法可以使用 Jpegoptim 一次压缩多个文件。

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

$ jpegoptim file1.jpeg file2.jpg file3.jpg

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

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

$ jpegoptim *.jpg

为了了解这个命令是如何工作的,我用 -l 标志列出了我的图片文件夹中的所有文件。 此命令将打印驻留在当前文件夹中的所有图像的总大小:

$ ls -l

需要优化的照片列表

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

优化文件夹中的所有jpg文件

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

第三个也是一个非常有用的选项是,您甚至可以使用 shell 脚本来自动压缩位于当前目录中的单一类型的所有文件。 以下是如何执行此操作:

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

本节将解释如何编写一个 shell 脚本,将位于当前目录中的所有 jpg 压缩到一个名为“compressed”的文件夹中。 该脚本不会创建文件夹; 它只会将输出保存到该名称已创建的文件夹中。

首先,移动到我们将在其中创建脚本的 Documents 文件夹:

$ cd Documents

注意:您可以将脚本保存在您喜欢的任何位置。 建议您在同一个文件夹中创建所有脚本,这样您就不会忘记保存它们的位置。 我个人更喜欢将所有脚本保存在 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 批量优化脚本

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

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

$ chmod +x compressAll.sh

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

运行脚本

最后,运行脚本如下:

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

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

运行脚本

您将看到所有压缩文件都将写入“压缩”文件夹中。 您可以通过以下命令验证这一点:

$ ls compressed

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

$ man jpegoptim

现在通过 Internet 共享您的图像并将它们上传到带宽和存储受限的位置应该不是问题