現在手機用戶非常龐大,針對手機用戶的流量不得不考慮,但手機網絡帶寬較小,怎麼將互聯網上的圖片壓縮是個難題,在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