欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

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

程序员文章站 2022-10-13 19:37:41
怎么将互联网上的图片压缩在windows上容易,有很多软件,但在linux上难道就没有办法了吗?在本文将为大家分享个强大的免费图片工具 ImageMagick,感兴趣的朋友可以了解下... 13-10-09...
现在手机用户非常庞大,针对手机用户的流量不得不考虑,但手机网络带宽较小,怎么将互联网上的图片压缩是个难题,在windows上容易,有很多软件,但在linux上有没有办法呢?
经过多次的寻找,还是找到了些方法,这里分享下:

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

centos系统的安装使用方法:
yum install imagemagick

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

接下来调用 系统命令

复制代码
代码如下:

#include <stdio.h>
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