linux压缩图片 linux压缩命令tar

大家好,感谢邀请,今天来为大家分享一下linux压缩图片的问题,以及和linux压缩命令tar的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

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

Linux下压缩和优化jpg与png图片的方法

jpegotim压缩jpg图片

安装jpegotim

如果你有epel yum源,使用如下命令即可

复制代码代码如下:

# yum install jpegoptim

压缩图片命令

复制代码代码如下:

# jpegoptim ttlsa.jpg

ttlsa.jpg 1425x823 24bit N JFIF [OK] 1074449--> 853514 bytes(20.56%), optimized.

可以看到ttlsa.jpg自动被压缩了20.56%。

再压缩一次

复制代码代码如下:

# jpegoptim ttlsa.jpg

ttlsa.jpg 1425x823 24bit N JFIF [OK] 853514--> 853514 bytes(0.00%), skipped.

图片已经被压缩过了,所以提示跳过,不需要在被压缩。

提供一个批量压缩的脚本

复制代码代码如下:

for i in/data/site/image.ttlsa.com/images/*.jpg; do jpegoptim$i; done

pngcrush优化PNG图片

项目地址:

复制代码代码如下:

# wget

# tar-xzvf pngcrush-1.7.88.tar.gz

# cd pngcrush-1.7.88

# make

# cp pngcrush/usr/bin

pngcrush使用语法

复制代码代码如下:

usage: pngcrush [options except for-e-d] infile.png outfile.png

pngcrush-e ext [other options] file.png...

pngcrush-d dir/ [other options] file.png...

pngcrush-ow [other options] file.png [tempfile.png]

pngcrush-n-v file.png...

options:

-bail(bail out of trial when size exceeds best size found

-bit_depth depth(deprecated)

-blacken(zero samples underlying fully-transparent pixels)

-brute(use brute-force: try 148 different methods)

........更多内容请自己看帮助......

pngcrush简单命令

复制代码代码如下:

pngcrush-brute-e"myimage_compressed.png" myimage.png

.........省略.....

Best pngcrush method= 123(ws 15 fm 4 zl 9 zs 1)= 124820

for output to ttlsattlsa_new.png

(1.63% critical chunk reduction)

(1.63% filesize reduction)

CPU time decoding 1.560, encoding 7.640, other 0.030, total 9.230 sec.

批量优化PNG图片

复制代码代码如下:

pngcrush-brute-d"/data/site/image.ttlsa.com/images"*.png

Linux系统下批量压缩图片尺寸大小的方法

现在手机用户非常庞大,针对手机用户的流量不得不考虑,但手机网络带宽较小,怎么将互联网上的图片压缩是个难题,在windows上容易,有很多软件,但在linux上有没有办法呢?

经过多次的寻找,还是找到了些方法,这里分享下:

一个比较好用命令行下可以使用的强大的免费图片工具 ImageMagick

Centos系统的安装使用方法:

yum install ImageMagick

再输入y确认即可安装完成

接下来调用系统命令

复制代码代码如下:

#include

int main()

{

printf(“Please install ImageMagick before run this programme,else it will not run correctlyn”);

system(“mkdir small”);

system(“cp*.jpg./small”);

system(“find./small-name‘*.jpg’-exec convert-resize 300×300{}{} \;”);

system(“pwd”);

system(“rename.jpg _small.jpg small/*.jpg”);

printf(“nConvert pictures finished,plesae check itn”);

return 0;

}

其中上面 convert中的 resize参数可以修改imagemagick,它可以对图片进行格式转换、大小压缩、增加水印等操作,而不需要去写第三方的程序,只需要写简单的SHELL脚本就可以完成图片压缩操作,接下来UBUNTU上介绍下:

安装命令:

sudo apt-get install imagemagick

其它linux有对应的软件安装命令,以下有我写的两个脚本,分别对图片进行批量格式以及压缩操作:

图片格式转换,这里的示例是将[bB][mM][pP](所有BMP文件)格式的文件,转换为占空间小的jpg文件:

复制代码代码如下:

#!/bin/sh

for img in `find./-name“*.[bB][mM][pP]“`; do

#change upper filename to lower

_imglower=`echo$img|tr“[:upper:]”“[:lower:]“`;

#get file’s basename

_basename=`basename$_imglower.bmp`;

#get file’s dir

_dirname=`dirname$img`;

#get desc filename with path

_basefullname=$_dirname”/”$_basename”.jpg”;

#do convert

convert$img$_basefullname;

#remove bmp file

rm$img;

echo“deal$_basefullname successfully”;

done

图片压缩脚本:

复制代码代码如下:

for img in `find./-name“*.[jJ][pP][gG]“`; do

convert-resize 85%*85%$img$img-resized;

rm$img;

mv$img-resized$img

echo$img

done

for img in `find./-name“*.[pP][nN][gG]“`; do

convert-resize 85%*85%$img$img-resized;

rm$img;

mv$img-resized$img

echo$img

done

for img in `find./-name“*.[gG][iI][fF]“`; do

convert-resize 85%*85%$img$img-resized;

rm$img;

mv$img-resized$img

echo$img

done

阅读剩余
THE END