通过 Debian 命令行优化 Jpeg/jpg 图片

当今智能手机和数码相机等摄影设备的图像分辨率日益提高。 当我们必须共享这些图像,将它们上传到云端,甚至将它们存储在存储空间有限的设备上时,真正的技巧就来了。 平面设计师必须处理同样的问题,但他们配备了可以压缩图像以便轻松共享的工具。

对于 Debian,有许多图形工具可以让您优化和压缩 jpeg,但在这里我们将讨论一个名为 Jpegoptim 的命令行工具。 这对于希望以最少的系统资源执行任务的具有终端经验的用户特别有用。 Jpegoptim 可以帮助您压缩您的 jpeg、jpg 和 jfif 文件,无论是否有质量损失,这取决于您要查找的内容。

在本文中,我们描述了怎样在您的 Debian 上安装命令行实用程序 Jpegoptim。 我们还将解释您可以使用该程序优化和压缩 jpeg 图像文件的不同方法。 这篇文章还将使您能够编写和运行 bash 自动压缩位于单个目录中的所有 jpeg 文件的过程的脚本。

我们已经在 Debian 10 Buster 系统上运行了本文中提到的命令和过程。

在 Debian 上安装 Jpegoptim

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

通过系统应用程序启动器搜索打开您的终端应用程序,如下所示:

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

$ sudo apt-get update

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

现在您已准备好安装 Image Jpegoptim; 您可以通过运行以下命令来做到这一点 sudo:

$ sudo apt-get install jpegoptim

安装 Jpegoptim

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

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

$ jpegoptim --version

检查 jpegoptim 版本

使用 Jpegoptim 进行图像压缩

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

无损压缩单个图像

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

$ jpegoptim image_name.jpg

例子:

$ jpegoptim sample.jpg

优化 jpeg 图片

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

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

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

缩小 jpeg 图像的大小

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

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

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

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

为了 example:

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

将优化的图像存储在不同的文件夹中

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

检查潜在压缩

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

下列 example 将进一步解释该过程:

我有一个名为 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] 图片.jpg

有损压缩

这是我的原图:

测试图片

这就是质量因子为 10% 的情况:

压缩图像

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

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

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

$ jpegoptim –size=[size-in-kb] 图片名称.jpg

批量优化图片文件

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

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

$ jpegoptim file1.jpeg file2.jpg file3.jpg

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

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

$ jpegoptim *.jpg

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

$ ls -l

图像列表

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

优化给定文件夹中的所有文件

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

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

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

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

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

$ cd Documents

注意:您可以将脚本保存在您喜欢的任何位置。 建议您在同一文件夹中创建所有脚本,以免忘记保存它们的位置。 我个人更喜欢将所有脚本保存在 Documents 文件夹中。

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

$ nano compressAll.sh

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

#!/bin/sh

# 压缩当前目录下的所有*.jpg文件

# 并将它们放在 ./compressed 目录中

# 与原始文件具有相同的修改日期。

对于我在 *.jpg; 做 jpegoptim -d ./compressed -p “$i”; 完毕

提示: 而不是将整个脚本输入您 bash 文件,您可以从这里复制它并使用 Ctrl+Shift+V 粘贴到终端中,或者使用右键单击菜单中的粘贴选项。

这是您的文件的样子:

使用 jpegoptim 压缩图像的脚本

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

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

$ chmod +x compressAll.sh

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

最后,运行脚本如下:

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

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

压缩脚本在起作用

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

$ ls compressed

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

$ man jpegoptim

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

通过 Debian 命令行优化 Jpeg/jpg 图片

相关阅读:

Posted in: LinuxTags: