Linux有问必答:如何在命令行下压缩JPEG图像
问题: 我有许多数码照相机拍出来的照片。我想在上传到Dropbox之前,优化和压缩下JPEG图片。有没有什么简单的方法压缩JPEG图片并不损耗他们的质量?
如今拍照设备(如智能手机、数码相机)拍出来的图片分辨率越来越大。甚至3630万像素的Nikon D800已经冲入市场,并且这个趋势根本停不下来。如今的拍照设备不断地提高着照片分辨率,使得我们不得不压缩后,再上传到有储存限制、带宽限制的云。
事实上,这里有一个非常简单的方法压缩JPEG图像。一个叫“jpegoptim”命令行工具可以帮助你“无损”美化JPEG图像,让你可以压缩JPEG图片而不至于牺牲他们的质量。万一你的存储空间和带宽预算真的很少,jpegoptim也支持“有损”压缩来调整图像大小。
如果要压缩PNG图像,参考这个指南的例子。
安装jpegoptimUbuntu, 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图像文件。为了应付这种情况,你可以使用接下来的脚本。
#!/bin/sh # 压缩当前目录下所有*.jpg文件 # 保存在./compressed目录 # 并拥有与原始文件同样的修改日期 for i in *.jpg; do jpegoptim -d ./compressed -p "$i"; done
Linux 学习笔记三:归档和压缩 大家好,我是阿萨。昨天对目录和文件的基本命令以及如何设置权限了解清楚了之后,今天就学习下归档和压缩。归档和压缩,其实日常使用Linux 的过程中都有用得到。但是可能大家都忽视了相关点。比如tar -zxvf 这个命令。 阿萨就经常在使用。但是从来没在意过它是归档还是压缩。
【看表情包学Linux】Redirect 重定向 | 时间相关指令 | 文件查找 | 打包与压缩(二) 本章仍然是继续对Linux 常用指令进行介绍,将讲解重定向、时间相关的指令、文件查找和打包压缩等指令。我们将初次理解 Linux下一切皆文件 这一概念,我将通过一个有趣的故事去讲解它。
【看表情包学Linux】Redirect 重定向 | 时间相关指令 | 文件查找 | 打包与压缩(一) 本章仍然是继续对Linux 常用指令进行介绍,将讲解重定向、时间相关的指令、文件查找和打包压缩等指令。我们将初次理解 Linux下一切皆文件 这一概念,我将通过一个有趣的故事去讲解它。
相关文章
- 28个Unix/Linux的命令行神器
- Linux下使Shell 命令脱离终端在后台运行
- Linux Command Docs
- 如何在Linux命令行下查询字典?
- Linux有问必答:如何在命令行创建一个MySQL数据库
- 如何在Linux的命令行中使用Evernote
- Linux 有问必答:如何在桌面版 Ubuntu 中用命令行更改系统代理设置
- 监控 Linux 容器性能的命令行神器
- 如何在Linux中用命令行工具管理KVM虚拟环境
- 如何在 Linux 中使用 Alpine 在命令行里访问 Gmail
- Linux 中如何通过命令行访问 Dropbox
- 在 Linux 命令行中使用和执行 PHP 代码(一)
- 如何隐藏你的 Linux 的命令行历史
- linux shadow文件*,Linux /etc/shadow文件详解
- linux下如何使make只输出执行过程中的命令序列
- linux下命令行打开文件夹窗口
- Linux命令之sftp - 安全文件传输命令行工具
- Linux运维工程师入门须掌握的10个技术点
- Linux-030-Python jupyter notebook 修改样式和字体调整
- linux c 编程 ------ 获取时间,计算程序执行时间
- 终端中的乐趣:6个有趣的Linux命令行工具
- 常用的linux命令总结
- 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---04
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---24
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---45
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---40
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---21
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---51
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---10