如何在命令行下压缩JPEG图像

发布于 2025-01-30 16:47:24 字数 2333 浏览 6 评论 0

问题 : 我有许多数码照相机拍出来的照片。我想在上传到 Dropbox 之前,优化和压缩下 JPEG 图片。有没有什么简单的方法压缩 JPEG 图片并不损耗他们的质量?

如今拍照设备(如智能手机、数码相机)拍出来的图片分辨率越来越大。甚至 3630 万像素的 Nikon D800 已经冲入市场,并且这个趋势根本停不下来。如今的拍照设备不断地提高着照片分辨率,使得我们不得不压缩后,再上传到有储存限制、带宽限制的云。

事实上,这里有一个非常简单的方法压缩 JPEG 图像。一个叫“jpegoptim”命令行工具可以帮助你“无损”美化 JPEG 图像,让你可以压缩 JPEG 图片而不至于牺牲他们的质量。万一你的存储空间和带宽预算真的很少,jpegoptim 也支持“有损”压缩来调整图像大小。

如果要压缩 PNG 图像,参考 这个指南 的例子。

安装 jpegoptim

Ubuntu, Debian 或 Linux Mint:

$ sudo apt-get install jpegoptim

Fedora:

$ sudo yum install jpegoptim

CentOS/RHEL 安装,先开启 EPEL 库 ,然后运行下列命令:

$ sudo yum install jpegoptim 

无损压缩 jpeg 图像

为了无损地压缩一副 JPG 图片,使用:

$ jpegoptim photo.jpg 
photo.jpg 2048x1536 24bit N ICC JFIF  [OK] 882178 --> 821064 bytes (6.93%), optimized.

注意,原始图像会被压缩后图像覆盖。

如果 jpegoptim 不能无损美化图像,将不会覆盖它:

$ jpegoptim -v photo.jpg 
photo.jpg 2048x1536 24bit N ICC JFIF  [OK] 821064 --> 821064 bytes (0.00%), skipped.

如果你想保护原始图片,使用"-d"参数指明保存目录

$ jpegoptim -d ./compressed photo.jpg 

这样,压缩的图片将会保存在./compressed 目录(以同样的输入文件名)

如果你想要保护文件的创建修改时间,使用"-p"参数。这样压缩后的图片会得到与原始图片相同的日期时间。

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

如果你只是想看看无损压缩率而不是真的想压缩它们,使用"-n"参数来模拟压缩,然后它会显示出压缩率。

$ jpegoptim -n photo.jpg 

有损压缩 JPG 图像

万一你真的需要要保存在云空间上,你还可以使用有损压缩 JPG 图片。

这种情况下,使用"-m<质量>"选项,质量数范围 0 到 100。(0 是最好质量,100 是最差质量)

例如,用 50%质量压缩图片:

$ jpegoptim -m50 photo.jpg 
photo.jpg 2048x1536 24bit N ICC JFIF  [OK] 882178 --> 301780 bytes (65.79%), optimized.

在牺牲质量的基础上,将会得到一个更小的图片。

一次压缩多张 JPEG 图像

最常见的情况是需要压缩一个目录下的多张 JPEG 图像文件。为了应付这种情况,你可以使用接下来的脚本。

#!/bin/sh

# 压缩当前目录下所有*.jpg 文件
# 保存在./compressed 目录
# 并拥有与原始文件同样的修改日期
for i in *.jpg;
do jpegoptim -d ./compressed -p "$i";
done

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
26 人气
更多

推荐作者

夢野间

文章 0 评论 0

百度③文鱼

文章 0 评论 0

小草泠泠

文章 0 评论 0

zhuwenyan

文章 0 评论 0

weirdo

文章 0 评论 0

坚持沉默

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文