Linux系统下在命令行中压缩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

时间: 2024-10-21 16:27:41

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

Win8系统下利用命令行实现定时关机的技巧

  有时候我们在wins8系统电脑中下载一些软件,没下载完可是需要出门,不过想着把电脑给设置一下,不要一直开机着,这时候可以设置让电脑定时关机.就像w764位旗舰版那样,虽然网上定时关机的的第三方软件很多,其实我们可以通过简单的命令行就可以实现电脑定时关机了,该如何操作呢?接下来随小编来学习一下Windows8系统下利用命令行实现定时关机的具体方法吧. 1.按键盘上的Win+R键,弹出运行对话框输入"Shutdown.exe -s -t 3600"表示1小时后自动关机. 提示:其中的3

MySQL如何在ps命令下隐藏命令行中的密码

在命令行中输入命令并不是一个好主意,会造成安全问题.(见另外一篇文章<MySQL密码输入的安全操作>)但是如果你决定去写一个应用,而这个应用需要在命令行中使用密码或者其他敏感信息.那么,你能通过以下方法禁止系统的其他用户轻易的看到这些敏感数据 呢?,类似MySQL在ps命令下隐藏密码. 假设我这里系统里两个用户,一个是root ,一个是dabu .测试系统为centos 6.5在按照下面的步骤做: [root@dabu.info ~]#su dabu #切换到dabu这个账号 [dabu@da

在 Linux 系统下从 ISO 镜像中提取和复制文件的 3 种方法

假设你的 Linux 服务器上有一个超大的 ISO 镜像文件,你想要打开它,然后提取或者复制其中的一个文件.你会怎么做呢? 其实在 Linux 系统里,有很多方法来实现这个要求. 比如说,你可以使用传统的 mount 命令以只读方式把 ISO 镜像文件加载为 loop 设备,然后再把文件复制到另一个目录. 在 Linux 系统下提取 ISO 镜像文件 为了完成该测试,你得有一个 ISO 镜像文件(我使用 ubuntu-16.10-server-amd64.iso 系统镜像文件)以及用于挂载和提取

Linux系统下wget命令的使用教程

  一.Linux wget简介 wget是linux上的命令行的下载工具.这是一个GPL许可证下的自由软件.Linux wget支持HTTP和FTP协议,支持代理服务器和断点续传功能,能够自动递归远程主机的目录,找到合乎条件的文件并将其下载到本地硬盘上;如果必要,Linux wget将恰当地转换页面中的超级连接以在本地生成可浏览的镜像.由于没有交互式界面,Linux wget可在后台运行,截获并忽略HANGUP信号,因此在用户推出登录以后,仍可继续运行.通常,Linux wget用于成批量地下

Linux系统下apachectl命令使用说明

  linux中的apachectl命令其设计意图是帮助管理员控制Apache httpd后台守护进程的功能.apachectl脚本有两种操作模式.第一,作为简单的httpd的前端程序,设置所有必要的环境变量,然后启动httpd ,并传递所有的命令行参数.第二,作为SysV初始化脚本,接受简单的一个单词的参数,如:start, restart, stop ,并把他们翻译为适当的信号发送给httpd .下面就和小编一起看看Linux系统apachectl命令使用说明的详细版本吧! 功能说明:可用来

Linux系统下修改环境变量PATH路径的三种方法

  电脑中必不可少的就是操作系统.而Linux的发展非常迅速,有赶超微软的趋势.这里介绍Linux的知识,让你学好应用Linux系统.比如要把/etc/apache/bin目录添加到PATH中,方法有三: 1.#PATH=$PATH:/etc/apache/bin 使用这种方法,只对当前会话有效,也就是说每当登出或注销系统以后,PATH 设置就会失效 2.#vi /etc/profile 在适当位置添加 PATH=$PATH:/etc/apache/bin (注意:= 即等号两边不能有任何空格)

在Windows系列中的Linux系统下“Which”命令的使用方法介绍

在Linux下,有一个命令叫做which,它可以在Path中寻找某个命令所在的目录并显示出来. Linux下: [adam@i ase adam]$ which ls /bin/ls [adam@i ase adam]$ which rm /bin/rm 在NT的Resource Kit中有一个where.exe,它也有相同的功效,不过Resource Kit是收费的,在这里我们可以作一个批处理文件来实现这个功能. 使用记事本编辑一个which.bat,并将其存放在Wi t目录或者其他Path变

Linux系统下tar命令的使用技巧总结

  Linux tar 命令是归档或分发文件时的强大武器.GNU tar 归档包可以包含多个文件和目录,还能保留其文件权限,它还支持多种压缩格式.Tar 表示 "Tape Archiver",这种格式是 POSIX 标准. Tar 文件格式 tar 压缩等级简介: 无压缩 没有压缩的文件用 .tar 结尾. Gzip 压缩 Gzip 格式是 tar 使用最广泛的压缩格式,它能快速压缩和提取文件.用 gzip 压缩的文件通常用 .tar.gz 或 .tgz 结尾.这里有一些如何创建和解压

Linux系统下pv命令的一些使用技巧小结

  如果你是一个 linux 系统管理员,那么毫无疑问你必须花费大量的工作时间在命令行上:安装和卸载软件,监视系统状态,复制.移动.删除文件,查错,等等.很多时候都是你输入一个命令,然后等待很长时间直到执行完成.也有的时候你执行的命令挂起了,而你只能猜测命令执行的实际情况. 通常 linux 命令不提供和进度相关的信息,而这些信息特别重要,尤其当你只有有限的时间时.然而这并不意味着你是无助的--现在有一个命令,pv,它会显示当前在命令行执行的命令的进度信息.在本文我们会讨论它并用几个简单的例子说