Linux有问必答:如何在命令行下压缩JPEG图像

Linux有问必答:如何在命令行下压缩JPEG图像

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

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

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

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

安装jpegoptim

Ubuntu, Debian 或 Linux Mint:


  1. $ sudo apt-get install jpegoptim

Fedora:


  1. $ sudo yum install jpegoptim

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


  1. $ sudo yum install jpegoptim

无损压缩jpeg图像

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


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

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

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


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

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


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

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

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


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

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


  1. $ jpegoptim -n photo.jpg

有损压缩JPG图像

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

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

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


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

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

一次压缩多张JPEG图像

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


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

原文发布时间:2015-05-13

本文来自云栖合作伙伴“linux中国”

时间: 2024-10-03 15:24:40

Linux有问必答:如何在命令行下压缩JPEG图像的相关文章

Linux系统下在命令行中压缩JPEG图像的方法

  如今拍照设备(如智能手机.数码相机)拍出来的图片分辨率越来越大.甚至3630万像素的Nikon D800已经冲入市场,并且这个趋势根本停不下来.如今的拍照设备不断地提高着照片分辨率,使得我们不得不压缩后,再上传到有储存限制.带宽限制的云. 事实上,这里有一个非常简单的方法压缩JPEG图像.一个叫"jpegoptim"命令行工具可以帮助你"无损"美化JPEG图像,让你可以压缩JPEG图片而不至于牺牲他们的质量.万一你的存储空间和带宽预算真的很少,jpegoptim

Linux 有问必答:在 Linux 上如何通过命令行来更改日期和时间

Linux 有问必答:在 Linux 上如何通过命令行来更改日期和时间 问题: 在 Linux 上, 我怎样通过命令行来改变日期和时间? 在 Linux 系统中保持日期和时间的同步是每一个 Linux 用户和系统管理员的重要责任. 很多程序都依靠精确的时间信息得以正常工作. 另外, 不精确的日期和时间会使得日志文件中的时间戳变得毫无意义, 减弱了它们在系统检查和检修中的作用. 对于生产系统来说, 精确的日期和时间甚至更为重要. 例如, 在零售公司中, 所有产品必须时刻准确地计数(并储存在数据库服

提高linux命令行下工作效率

本文介绍一些命令行下提高工作效率的技巧,有助于提高学习的兴趣. 1.命令行下拷贝与粘贴 Linux安装后每次启动时都会自动运行一个gpm程序, 然后就可以用鼠标拷贝与粘贴了.具体做法是,按住鼠标左键拖动,使要拷贝的地方反白,这样拷贝的内容就会被粘贴在光标所在位置了. 2.快速进入某些目录 键入cd-可直接进入用户的home目录:键入cd-可进入上一个目录. 3.命令补齐 命令补齐是指当键入的字符足以确定目录下一个惟一的文件时,只须按Tab键就可以自动补齐该文件名的剩下部分. Linux下的有些文

如何在Linux 命令行下浏览天气预报

  Q: 我经常在 Linux 桌面查看天气预报.然而,是否有一种在终端环境下,不通过桌面小插件或者浏览器查询天气预报的方法? 其中有一个就是wego,一个终端下的小巧程序.使用基于ncurses 的接口,这个命令行程序允许你查看当前的天气情况和之后的预报.它也会通过一个天气预报的API 收集接下来5 天的天气预报. 在Linux 下安装 wego 安装 wego 相当简单.wego 是用 Go 编写的,引起第一个步骤就是安装Go 语言.然后再安装 wego. $ go get github.c

linux shell命令行下curl问题。。。,,

问题描述 linux shell命令行下curl问题...,, curl -d 之后收到网页的返回数据,是代表发送成功了么 如果是成功了,为什么我么有收到短信呢 如果没成功,应该怎么发送一个post数据呢 解决方案 关于curl命令行下载页面为空的问题 解决方案二: curl -d只是post的数据过去,你要看发挥的信息是否有提示成功.

Linux 命令行下嗅探 HTTP 流量的工具:httpry

Linux 命令行下嗅探 HTTP 流量的工具:httpry 假设由于某种原因,你需要嗅探HTTP站点的流量(如HTTP请求与响应).举个例子,你可能在测试一个web服务器的实验性功能,或者你在为某个web应用或RESTful服务排错,又或者你正在为PAC(proxy auto config)排错或寻找某个站点下载的恶意软件.不论什么原因,在这些情况下,进行HTTP流量嗅探对于系统管理.开发者.甚至最终用户来说都是很有帮助的. 数据包嗅工具tcpdump被广泛用于实时数据包的导出,但是你需要设置

在Linux命令行下管理Samba4 AD架构

这篇文章包括了管理 Samba4 域控制器架构过程中的一些常用命令,比如添加.移除.禁用或者列出用户及用户组等. 我们也会关注一下如何配置域安全策略以及如何把 AD 用户绑定到本地的 PAM 认证中,以实现 AD 用户能够在 Linux 域控制器上进行本地登录. 要求 在 Ubuntu 系统上使用 Samba4 来创建活动目录架构 第一步:在命令行下管理 1. 可以通过 samba-tool 命令行工具来进行管理,这个工具为域管理工作提供了一个功能强大的管理接口. 通过 samba-tool 命

Samba 系列(二):在 Linux 命令行下管理 Samba4 AD 架构

这篇文章包括了管理 Samba4 域控制器架构过程中的一些常用命令,比如添加.移除.禁用或者列出用户及用户组等. 我们也会关注一下如何配置域安全策略以及如何把 AD 用户绑定到本地的 PAM 认证中,以实现 AD 用户能够在 Linux 域控制器上进行本地登录. 要求 在 Ubuntu 系统上使用 Samba4 来创建活动目录架构 第一步:在命令行下管理 1. 可以通过 samba-tool 命令行工具来进行管理,这个工具为域管理工作提供了一个功能强大的管理接口. 通过 samba-tool 命

linux命令行下使用curl命令查看自己机器的外网ip_linux shell

Linux命令行下如何查看自己机器的外网ip?可以在命令行下使用curl命令实现这个功能,试一下下面的命令吧 复制代码 代码如下: curl ifconfig.me 输入此条命令,就可以获取到本机的外网ip.