使用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

 

改变背景色

posted @   Biiigfish  阅读(2980)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示