使用convert来批量处理图片

convert 是 ImageMagick 工具包中的工具之一。

ImageMagick 提供了丰富的基于命令行的图片处理能力,非常适合制作批量图片处理工具,比如,生成缩略图、批量格式转换等等。

另外,针对常用的变成语言,ImageMagic 都拥有相应的接口库供使用。是各种图像处理开发中的优选方案。更多功能有待挖掘。

 

图片缩放(采样并插值)

这个是把图片批量进行 resize 的脚本。

#!/bin/sh
counter=1
root=mypict
resolution=400x300
for i in `ls -1 $1/*.jpg`; do
    echo "Now working on $i"
    convert -resize $resolution $i ${root}_${counter}.jpg
    counter=`expr $counter + 1`
done

除了指定分辨率(会就近原则,保持原来画幅比例),还可以指定缩放倍数:

$convert image.png -resize 50%  -resize 200% -quality 100 resize.png

上面这条,先缩小为原来一半,然后放大一倍;虽然最后大小和原来一样,但是因为缩放过程中像素有丢失,画面明显模糊了。

使用 -quality 开关,可以控制 resize 的质量;可以不指定,但是,总觉得默认的 resize 图片质量不高。

 

图片抽样

与resize的区别在于-sample只进行了等概率抽样,没有进行插值。一般生成缩略图用这个方法:

$convert image.png -sample 50% sample.png  

 

图片切割

使用 convert 将图片切割成多张 40x40 的小图:

convert 5.png -crop 40x40 test5.png

从(0,20)位置开始,裁剪一张(320,200)的图出来:

convert 1-2.png -crop 320x200+0+20 test.png

从右下角(-10, -5)位置开始,裁剪一张 100x80 的图出来:

convert src.jpg -gravity southeast -crop 100x80+10+5 dest.jpg

在原图中心截取一张 100x80 的图出来:

convert src.jpg -gravity center -crop 100x80+0+0 dest.jpg

 

图片旋转

图片旋转实际用的场合最多可能是90度和180度。下面这句可以实现 45 度旋转:

$convert image.png -rotate 45 rotate.png 

按上面方式旋转后,是把旋转的图片放到了一张更大的图当中,大图空余部分,是用白色填充的。如果我们先用其它颜色填充:

$convert image.png -backround black -rotate 45 rotate.png  
$convert image.png -background #000000 -rotate 45 rotate.png 
$convert image.png -background rgba(0,0,0,0) -rotate 45 rotate.png  

 

合成图片

应用比较多的可能就是做水印了,暂时记录做水印的方法:

$convert image.png -gravity center -compose over overlay.png -composite newimage.png  
$convert image.png -gravity southeast -compose over overlay.png -composite newimage.png 

 

添加文字

恩,在图片上写一些字,别问我为什么需要:

$convert image.png -draw "text 0,20 'some text'" newimage.png

从文件里面读取,并指定大小、颜色、位置等:

$convert source.jpg -font xxx.ttf -fill red -pointsize 48 -annotate +50+50 @text.txt result.jpg

 

去掉图片边框

$convert image.png -trim -fuzz 10% newimage.png

 

改变背景色

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值