开源软件

Linux 下无损图片压缩小工具介绍

今天我们来介绍实用的小工具。我们每个人都会有很多照片。尤其是当相机拍出来的照片越来越大时,我们的手机、磁盘开始有些吃紧了。目前其实有很多 GUI 工具可进行低损,甚至无损图片压缩。假如我们有一大堆图片文件分散在各个目录下,这些工具就有那么一点不好用了。这个时候就要看强大的命令行了。

  • jpegoptim - 用于无损压缩优化 JPEG 文件的小工具。
  • OptiPNG - 不丢失任何信息的 PNG 文件优化压缩小程序。

安装 jpegoptim

Debian 系列

$ sudo apt-get install jpegoptim

RedHat 系列

在 RHEL、CentOS、Fedora 这样的系统上,你需要先安装并启用 EPEL 仓库。你可以直接用下面这条命令安装启用。

$ sudo yum install epel-release
$ sudo  dnf install epel-release    [On Fedora 22+ versions]

OK,继续安装。

$ sudo yum install jpegoptim
$ sudo dnf install jpegoptim    [On Fedora 22+ versions]

这样就安装好了,接下来看看怎么用起来。

使用 jpegoptim

jpegoptim 的用法很简单。

$ jpegoptim filename.jpeg
$ jpegoptim [options] filename.jpeg

我们选一张 LinuxStory 网站上的 jpg 图片来做演示,我们可以在压缩前后通过 du 命令来查看文件的大小。

ubuntu@VM-166-1-ubuntu:~/images$ du -sh LS.jpg
656K    LS.jpg
ubuntu@VM-166-1-ubuntu:~/images$ jpegoptim LS.jpg
LS.jpg 2838x1419 24bit N Exif IPTC ICC Adobe  [OK] 667464 -- 583233 bytes (12.62%), optimized.
ubuntu@VM-166-1-ubuntu:~/images$ du -sh LS.jpg
576K    LS.jpg
ubuntu@VM-166-1-ubuntu:~/images$

随便用哪一个图片查看软件打开这张图片,你绝对看不错压缩前后有什么区别。默认压缩会尽可能的保证和原图的质量接近。

如果你还嫌不够小,那么可以牺牲一些质量。比如我们可以指定压缩到指定的文件大小。比如我们可以把文件压缩到 250K 。

ubuntu@VM-166-1-ubuntu:~/images$ jpegoptim --size=250k LS.jpg
LS.jpg 2838x1419 24bit N Exif IPTC ICC JFIF  [OK] 583233 -- 256134 bytes (56.08%), optimized.
ubuntu@VM-166-1-ubuntu:~/images$ du -sh LS.jpg
256K    LS.jpg
ubuntu@VM-166-1-ubuntu:~/images$

批量处理

命令行的工具一般都能很好的和其他工具配合使用,这样一来,想要批量压缩就变得很简单了。

ubuntu@VM-166-1-ubuntu:~/images$ ls -l
total 65184
-rwxr----- 1 ubuntu ubuntu 6680532 Jan 19 12:21 DSC_0310.JPG
-rwxr----- 1 ubuntu ubuntu 6846248 Jan 19 12:21 DSC_0311.JPG
-rwxr----- 1 ubuntu ubuntu 7174430 Jan 19 12:21 DSC_0312.JPG
-rwxr----- 1 ubuntu ubuntu 6514309 Jan 19 12:21 DSC_0313.JPG
-rwxr----- 1 ubuntu ubuntu 6755589 Jan 19 12:21 DSC_0314.JPG
-rwxr----- 1 ubuntu ubuntu 6789763 Jan 19 12:21 DSC_0315.JPG
-rwxr----- 1 ubuntu ubuntu 6958387 Jan 19 12:21 DSC_0316.JPG
-rwxr----- 1 ubuntu ubuntu 6463855 Jan 19 12:21 DSC_0317.JPG
-rwxr----- 1 ubuntu ubuntu 6614855 Jan 19 12:21 DSC_0318.JPG
-rwxr----- 1 ubuntu ubuntu 5931738 Jan 19 12:21 DSC_0319.JPG

使用 find、xargs 这样的工具可以压缩你指定的一些文件。

ubuntu@VM-166-1-ubuntu:~/images$ find . -name "*.JPG" | xargs jpegoptim
DSC_0310.JPG 6000x4000 24bit N Exif  [OK] 6680532 -- 5987094 bytes (10.38%), optimized.
DSC_0311.JPG 6000x4000 24bit N Exif  [OK] 6846248 -- 6167842 bytes (9.91%), optimized.
DSC_0312.JPG 6000x4000 24bit N Exif  [OK] 7174430 -- 6536500 bytes (8.89%), optimized.
DSC_0313.JPG 6000x4000 24bit N Exif  [OK] 6514309 -- 5909840 bytes (9.28%), optimized.
DSC_0314.JPG 6000x4000 24bit N Exif  [OK] 6755589 -- 6144165 bytes (9.05%), optimized.
DSC_0315.JPG 6000x4000 24bit N Exif  [OK] 6789763 -- 6090645 bytes (10.30%), optimized.
DSC_0316.JPG 6000x4000 24bit N Exif  [OK] 6958387 -- 6354320 bytes (8.68%), optimized.
DSC_0317.JPG 6000x4000 24bit N Exif  [OK] 6463855 -- 5909298 bytes (8.58%), optimized.
DSC_0318.JPG 6000x4000 24bit N Exif  [OK] 6614855 -- 6016006 bytes (9.05%), optimized.
DSC_0319.JPG 6000x4000 24bit N Exif  [OK] 5931738 -- 5337023 bytes (10.03%), optimized.

现在你应该会使用 jpegoptim 对需要的 jpeg 图片进行压缩了。还有更多的详细用法,你可以查看 jpegoptim 的 man 手册。

$ man jpegoptim

安装 OptiPNG

Debian 系列

$ sudo apt-get install optipng

RedHat 系列

与上面一样需要 epel

$ sudo yum install optipng
$ sudo dnf install optipng    [On Fedora 22+ versions]

optipng 用法

用法依然很简单。

$ optipng filename.png
$ optipng [options] filename.png

以 LS.png 为例,演示 optipng 命令。

buntu@VM-166-1-ubuntu:~/images$ optipng LS.png
OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: LS.png
1500x541 pixels, 4x8 bits/pixel, RGB+alpha
Input IDAT size = 806781 bytes
Input file size = 809112 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 0     IDAT size = 732923
  zc = 9  zm = 8  zs = 0  f = 5     IDAT size = 695518
  zc = 9  zm = 8  zs = 1  f = 5     IDAT size = 670355

Selecting parameters:
  zc = 9  zm = 8  zs = 1  f = 5     IDAT size = 670355

Output IDAT size = 670355 bytes (136426 bytes decrease)
Output file size = 672098 bytes (137014 bytes = 16.93% decrease)

ubuntu@VM-166-1-ubuntu:~/images$ du -sh LS.png
664K    LS.png

正如你看到的, optipng 的压缩效果相当好,并且几乎没有质量损失。

同 jpegoptim 一样,你依然可以将 optipng 与现有的 find 、xargs 等命令组合起来进行批量 png 图片压缩。甚至你可以写一个脚本对你上传到网站的图片进行自动压缩。

更多细节,可以查看 optipng 的 man 手册。

$ man optipng

小结

LinuxStory 上有很多 jpeg 、png 图片。并且由于历史原因这些图片都很少被压缩。通过这样的工具对网站所有图片压缩后,节约了 30% 的磁盘空间。那么读者你是否也需要对你的照片压缩呢?赶紧试试吧!


原文链接:https://www.tecmint.com/optimize-and-compress-jpeg-or-png-batch-images-linux-commandline/
本文链接:https://linuxstory.org/optimize-and-compress-jpeg-or-png-batch-images-linux-commandline/

转载请注明出处,否则必究相关责任。

对这篇文章感觉如何?

太棒了
2
不错
1
爱死了
1
不太好
1
感觉很糟
1
雨落清风。心向阳

    You may also like

    1 Comment

    Leave a reply

    您的电子邮箱地址不会被公开。 必填项已用 * 标注

    此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

    More in:开源软件

    开源软件

    嵌入式 Linux 的瑞士军刀:BusyBox

    上期文章中,笔者向各位介绍了 musl,一个 Glibc 的替代方案,它的主要优势体现在更加整洁的代码、更小的二进制体积和更优秀的静态链接支持。而本期文章的主角:BusyBox 则是 GNU Core […]
    开源项目

    Pwnagotchi 开箱教程

    Pwnagotchi 是一个由 Bettercap 驱动的 A2C 的 “AI”,它能够从周围的 WiFi 环境中学习,以最大限度地利用它捕获的可破解 WPA 密钥材料,该材料将作为可被 hashcat 破解的 PCAP 文件收集在磁盘上。 简单来说,Pwnagotchi ...
    开源软件

    光速上手C++20协程

    今天来学习下怎么使用基于C++20设计开发的协程框架async_simple(https://github.com/alibaba/async_simple)。async_simple是阿里巴巴开源的轻量级C++异步框架。提供了基于C++20无栈协程(Lazy),有栈协程(Uthread)以及Future/Promise等异步组件。连续两年经历天猫双十一磨砺,承担了亿级别流量洪峰,具备高性能和高稳定性。