原文: http://www.lao8.org/article_1698/imagemagick_linux.html
我的ImageMagick使用心得 http://www.charry.org/docs/linux/ImageMagick/ImageMagick.html
使用ImageMagick如何对图片进行全面压缩 http://www.programgo.com/article/88632572307/
ImageMagick之图片裁剪 http://www.netingcn.com/imagemagick-crop.html
linux中批量缩放图片的命令:
首先得安装ImageMagick,linux中批量缩小图片的这个工具超级强大
linux centos安装命令:
1 |
sudo dnf -y install ImageMagick |
-resize 跟 -sample的区别
放大,缩小 -resize, -sample
与resize的区别在于-sample只进行了采样,没有进行插值,所以用来生成缩略图最合适
批量缩放图片到指定尺寸的命令:
1 2 |
for img in `ls *.jpg` ; do convert -resize 25%x25% $img thumb-$img ; done #这个命令是批量缩小25% |
可以只指定宽度或者高度等比缩放
例如只指定宽度等比缩放的命令:
1 |
for img in `ls *.jpg` ; do convert -resize 200 $img thumb-$img ; done |
或者只指定高度等比缩放:
1 |
for img in `ls *.jpg` ; do convert -resize x200 $img thumb-$img ; done |
为当前目录的所有图像生成缩略图
1 |
for img in `ls*.jpg` do convert -resize 25%x25% $img thumb-$img done |
批量缩小根目录文件夹中的图片, 如果宽度大于900px就缩小,否则不动:
1 |
for img in `ls */*.jpg` ; do convert -resize "900 >" $img thumb-$img ; done |
注: -resize 是缩小,-sample 是压缩
注意:为保险起见,压缩图片前可以先拷贝备份一下,安然再压缩就可以了: 例如
1 |
cp -rf upload/* upload2/ |
创建新文件夹来存放处理后文件
1 |
rm -rf tmp; mkdir tmp; for img in `ls *.jpg` ; do convert -resize 1000 $img ./tmp/$img ; done |
1 |
rm -rf /home/pandy/图片/tmp; mkdir /home/pandy/图片/tmp; for img in `cd /home/pandy/图片; ls *.jpg` ; do convert -resize 500 $img /home/pandy/图片/tmp/$img ; done |
图片优化
1 2 3 4 5 |
rm -rf quality; mkdir quality; for img in `ls *.jpg` ; do convert -quality 50% $img ./quality/$img ; done rm -rf quality; mkdir quality; for img in `ls *.jpg` ; do convert -quality 60% $img ./quality/$img ; done rm -rf quality; mkdir quality; for img in `ls *.jpg` ; do convert -quality 70% $img ./quality/$img ; done rm -rf quality; mkdir quality; for img in `ls *.jpg` ; do convert -quality 80% $img ./quality/$img ; done rm -rf quality; mkdir quality; for img in `ls *.jpg` ; do convert -quality 90% $img ./quality/$img ; done |
图片放缩,去掉多余信息和优化
1 |
rm -rf tmp; mkdir tmp; for img in `ls *.jpg` ; do convert -resize 640 -strip -quality 70% $img ./tmp/$img ; done |
裁剪
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
convert -crop 100x100+0+0 1.jpg 1_1.jpg //convert 原始图片 -crop widthxheight+x+y 目标图片 convert src.jpg -crop 100x100 dest.jpg //假设src.jpg的大小是300x200,执行命令后将得到名为dest-0.jpg、dest-1.jpg...dest-5.jpg 的6张大小为100x100的小图片。注意如果尺寸不是目标图片的整数倍,那么右边缘和下边缘的一部分图片就用实际尺寸 convert src.jpg -crop 100x80+50+30 dest.jpg //在原始图片的上距离上部30像素左部50为起点的位置,分别向左向下截取一块大小为100x80的图片。如果x相对于坐标,宽度不够100,那就取实际值。 convert src.jpg -gravity center -crop 100x80+0+0 dest.jpg //在原始图上截取中心部分一块100x80的图片 convert src.jpg -gravity southeast -crop 100x80+10+5 dest.jpg //在原始图上截取右下角距离下边缘10个像素,右边缘5个像素一块100x80的图片 |
上下左右翻转
1 2 3 4 |
//上下翻转 rm -rf tmp; mkdir tmp; for img in `ls *.jpg` ; do convert -flip $img ./tmp/$img ; done //左右翻转 rm -rf tmp; mkdir tmp; for img in `ls *.jpg` ; do convert -flop $img ./tmp/$img ; done |
新版本
修改图片到指定尺寸 magick convert -resize 640x426! cctv001.png cctv002.png