如何在 Linux 命令行中优化和压缩 JPEG 或 PNG 图像
您有很多图片,想要在将图片上传到任何云或本地存储之前优化和压缩图片而不损失其原始质量?有很多 GUI 应用程序可以帮助您优化图片。但是,这里有两个简单的命令行实用程序可以优化图片,它们是:
- jpegoptim – 是一种在不损失质量的情况下优化/压缩 JPEG 文件的实用程序。
- OptiPNG – 是一个小程序,可以将 PNG 图像优化为更小的尺寸而不会丢失任何信息。
使用这两个工具,您可以一次优化单个或多个图像。
从命令行压缩或优化 JPEG 图像
jpegoptim是一个命令行工具,可用于优化和压缩 JPEG、JPG 和 JFIF 文件,而不会损失其实际质量。此工具支持无损优化,该优化基于优化 Huffman 表。
在 Linux 中安装 jpegoptim
要在 Linux 系统上安装jpegoptim,请从终端运行以下命令。
关于 Debian 及其衍生产品
# apt-get install jpegoptim or $ sudo apt-get install jpegoptim
在基于 RedHat 的系统上
在基于 RPM 的系统(如RHEL、CentOS、Fedora等)上,您需要安装并启用 EPEL 存储库,或者您也可以直接从命令行安装 epel 存储库,如下所示:
# yum install epel-release # dnf install epel-release [On Fedora 22+ versions]
接下来从存储库安装 jpegoptim 程序,如下所示:
# yum install jpegoptim # dnf install jpegoptim [On Fedora 22+ versions]
如何使用 Jpegoptim 图像优化器
jpegoptm 的语法是:
$ jpegoptim filename.jpeg $ jpegoptim [options] filename.jpeg
现在让我们压缩下面的example.jpeg
图像,但在优化图像之前,首先使用du 命令找出图像的实际大小,如图所示。
$ du -sh example.jpeg 6.2M example.jpeg
这里实际文件大小为6.2MB,现在通过运行以下命令压缩此文件:
$ jpegoptim example.jpeg
在任何图像查看器应用程序中打开压缩图像,您都不会发现任何重大差异。源图像和压缩图像具有相同的质量。
上述命令将图像优化到最大可能大小。但是,您可以将给定图像压缩到特定大小,但这会禁用无损优化。
例如,让我们将上面的图像从5.6MB压缩到250k左右。
$ jpegoptim --size=250k example.jpeg
批量 JPEG 图像压缩和优化
你可能会问如何压缩整个目录中的图片,这也不难。转到图片所在的目录。
example@example ~ $ cd img/ example@example ~/img $ ls -l total 65184 -rwxr----- 1 example example 6680532 Jan 19 12:21 DSC_03oorxdbduoftxclywctlkxrdgnassjqnm.jpg -rwxr----- 1 example example 6846248 Jan 19 12:21 DSC_03nkdomldnvtupgdkqasqbiiiodxhdboja.jpg -rwxr----- 1 example example 7174430 Jan 19 12:21 DSC_03sbeawjagjfnxyvvsbhdrdgjynmbtjrcy.jpg -rwxr----- 1 example example 6514309 Jan 19 12:21 DSC_031xyyxirteuntdbifeyejimpqwqxidhhkm.jpg -rwxr----- 1 example example 6755589 Jan 19 12:21 DSC_031qiwkrdciyedvrdhupuhhiqdgoahoxbsa.jpg -rwxr----- 1 example example 6789763 Jan 19 12:21 DSC_031mbhcybkrcxfngliawfrvntmnmfgbjntd.jpg -rwxr----- 1 example example 6958387 Jan 19 12:21 DSC_03ynyigdxjpccwtwohaawolbgfsdxejqgf.jpg -rwxr----- 1 example example 6463855 Jan 19 12:21 DSC_03xdabmlspcfwdkrltmkmbgwpmltbwhati.jpg -rwxr----- 1 example example 6614855 Jan 19 12:21 DSC_03pqgcbrtlnflpehwbyjcritujnbwjkctv.jpg -rwxr----- 1 example example 5931738 Jan 19 12:21 DSC_03jrlaqyvanfsqxwhxfuosqiqxwbegqmkn.jpg
然后运行以下命令一次性压缩所有图像。
example@example ~/img $ jpegoptim *.JPG DSC_03oorxdbduoftxclywctlkxrdgnassjqnm.jpg 6000x4000 24bit N Exif [OK] 6680532 --> 5987094 bytes (10.38%), optimized. DSC_03nkdomldnvtupgdkqasqbiiiodxhdboja.jpg 6000x4000 24bit N Exif [OK] 6846248 --> 6167842 bytes (9.91%), optimized. DSC_03sbeawjagjfnxyvvsbhdrdgjynmbtjrcy.jpg 6000x4000 24bit N Exif [OK] 7174430 --> 6536500 bytes (8.89%), optimized. DSC_031xyyxirteuntdbifeyejimpqwqxidhhkm.jpg 6000x4000 24bit N Exif [OK] 6514309 --> 5909840 bytes (9.28%), optimized. DSC_031qiwkrdciyedvrdhupuhhiqdgoahoxbsa.jpg 6000x4000 24bit N Exif [OK] 6755589 --> 6144165 bytes (9.05%), optimized. DSC_031mbhcybkrcxfngliawfrvntmnmfgbjntd.jpg 6000x4000 24bit N Exif [OK] 6789763 --> 6090645 bytes (10.30%), optimized. DSC_03ynyigdxjpccwtwohaawolbgfsdxejqgf.jpg 6000x4000 24bit N Exif [OK] 6958387 --> 6354320 bytes (8.68%), optimized. DSC_03xdabmlspcfwdkrltmkmbgwpmltbwhati.jpg 6000x4000 24bit N Exif [OK] 6463855 --> 5909298 bytes (8.58%), optimized. DSC_03pqgcbrtlnflpehwbyjcritujnbwjkctv.jpg 6000x4000 24bit N Exif [OK] 6614855 --> 6016006 bytes (9.05%), optimized. DSC_03jrlaqyvanfsqxwhxfuosqiqxwbegqmkn.jpg 6000x4000 24bit N Exif [OK] 5931738 --> 5337023 bytes (10.03%), optimized.
您还可以一次压缩多个选定的图像:
$ jpegoptim DSC_03oorxdbduoftxclywctlkxrdgnassjqnm.jpg DSC_03nkdomldnvtupgdkqasqbiiiodxhdboja.jpg DSC_03sbeawjagjfnxyvvsbhdrdgjynmbtjrcy.jpg DSC_03oorxdbduoftxclywctlkxrdgnassjqnm.jpg 6000x4000 24bit N Exif [OK] 6680532 --> 5987094 bytes (10.38%), optimized. DSC_03nkdomldnvtupgdkqasqbiiiodxhdboja.jpg 6000x4000 24bit N Exif [OK] 6846248 --> 6167842 bytes (9.91%), optimized. DSC_03sbeawjagjfnxyvvsbhdrdgjynmbtjrcy.jpg 6000x4000 24bit N Exif [OK] 7174430 --> 6536500 bytes (8.89%), optimized.
有关jpegoptim工具的更多详细信息,请查看手册页。
$ man jpegoptim
从命令行压缩或优化 PNG 图像
OptiPNG是一个命令行工具,用于优化和压缩 PNG(便携式网络图形)文件而不丢失其原始质量。
OptiPNG的安装和使用与jpegoptim非常相似。
在 Linux 中安装 OptiPNG
要在 Linux 系统上安装OptiPNG,请从终端运行以下命令。
关于 Debian 及其衍生产品
# apt-get install optipng or $ sudo apt-get install optipng
在基于 RedHat 的系统上
# yum install optipng # dnf install optipng [On Fedora 22+ versions]
注意:您必须在基于RHEL/CentOS的系统上启用epel 存储库才能安装optipng程序。
如何使用 OptiPNG 图像优化器
optipng的一般语法是:
$ optipng filename.png $ optipng [options] filename.png
让我们压缩example.png
图像,但在优化之前,首先检查图像的实际大小,如下所示:
example@example ~/img $ ls -lh example.png -rw------- 1 example example 350K Jan 19 12:54 example.png
此处,上面图片的实际文件大小为350K,现在通过运行以下命令压缩此文件:
example@example ~/img $ optipng example.png OptiPNG 0.6.4: Advanced PNG optimizer. Copyright (C) 2001-2010 Cosmin Truta. ** Processing: example.png 1493x914 pixels, 4x8 bits/pixel, RGB+alpha Reducing image to 3x8 bits/pixel, RGB Input IDAT size = 357525 bytes Input file size = 358098 bytes Trying: zc = 9 zm = 8 zs = 0 f = 0 IDAT size = 249211 Selecting parameters: zc = 9 zm = 8 zs = 0 f = 0 IDAT size = 249211 Output IDAT size = 249211 bytes (108314 bytes decrease) Output file size = 249268 bytes (108830 bytes = 30.39% decrease)
正如您在上面的输出中看到的,example.png文件的大小已减少到30.39%。现在使用以下命令再次验证文件大小:
example@example ~/img $ ls -lh example.png -rw-r--r-- 1 example example 244K Jan 19 12:56 example.png
在任何图像查看器应用程序中打开压缩图像,您都不会发现原始文件和压缩文件之间有任何重大差异。源图像和压缩图像将具有相同的质量。
批量 PNG 图像压缩和优化
要一次压缩批量或多张 PNG 图像,只需转到所有图像所在的目录并运行以下命令进行压缩。
example@example ~ $ cd img/ example@example ~/img $ optipng *.png OptiPNG 0.6.4: Advanced PNG optimizer. Copyright (C) 2001-2010 Cosmin Truta. ** Processing: Debian-ucaifslkcfuvmosolwdslgivbjdulius.png 720x345 pixels, 3x8 bits/pixel, RGB Input IDAT size = 95151 bytes Input file size = 95429 bytes Trying: zc = 9 zm = 8 zs = 0 f = 0 IDAT size = 81388 Selecting parameters: zc = 9 zm = 8 zs = 0 f = 0 IDAT size = 81388 Output IDAT size = 81388 bytes (13763 bytes decrease) Output file size = 81642 bytes (13787 bytes = 14.45% decrease) ** Processing: Fedora-2jgwsanhgqivghcfhomxmruykhukcwiwr.png 720x345 pixels, 4x8 bits/pixel, RGB+alpha Reducing image to 3x8 bits/pixel, RGB Input IDAT size = 259678 bytes Input file size = 260053 bytes Trying: zc = 9 zm = 8 zs = 0 f = 5 IDAT size = 222479 zc = 9 zm = 8 zs = 1 f = 5 IDAT size = 220311 zc = 1 zm = 8 zs = 2 f = 5 IDAT size = 216744 Selecting parameters: zc = 1 zm = 8 zs = 2 f = 5 IDAT size = 216744 Output IDAT size = 216744 bytes (42934 bytes decrease) Output file size = 217035 bytes (43018 bytes = 16.54% decrease) ....
有关optipng 的更多详细信息,请查看手册页。
$ man optipng
结论
如果您是网站管理员,希望在网站或博客上提供优化的图片,这些工具会非常方便。这些工具不仅可以节省磁盘空间,还可以减少上传图片时的带宽。
如果您知道任何其他更好的方法来实现同样的目标,请通过评论告诉我们,并且不要忘记在您的社交网络上分享这篇文章并支持我们。