imagemagick linux 下面的 美图秀秀 光影魔术手,可惜没找到它的GUI程序。




使用imagemagick的convert命令来处理图片真是太方便了。

imagemagick文档:http://www.imagemagick.org/script/command-line-options.php 

新添加:蒙太奇拼图功能,太厉害了,真好玩,哈哈,传送门 http://www.imagemagick.org/script/montage.php  这是脚本,下面是例子用法等:链接在此

出现了一个问题,目前没有解决:

convert-im6.q16: width or height exceeds limit `white' @ error/cache.c/OpenPixelCache/3802.

初步分析,应该是磁盘空间受限,缓存被限制在1G,哪位朋友有办法解决上面的问题,请一定留言告知,谢谢。

leanhorse@deepin:~$ identify -list resource
Resource limits:
Width: 16KP
Height: 16KP
Area: 128MP
Memory: 256MiB
Map: 512MiB
Disk: 1GiB
File: 768
Thread: 2
Throttle: 0
Time: unlimited
leanhorse@deepin:~$

批量转换文件格式、改变尺寸同时再压缩输出的时候可以使用下面的方法(for循环):

for image in *.jpg;

do convert -resize 579×1024 -quality 80 “$image” “${image%.jpg}.png”;

done;

 

看了一会儿这个文档,我被ImageMagick强大的功能吓到不能呼吸。。。太厉害了。。

 

convert功能强大,用来批处理图片的放大、缩小、裁剪、旋转、合并、水印、拼接、格式转换等都非常方便,特别适合后台的图片处理。

1,获取图片信息
$identify image.png
image.png PNG 559×559 559×559+0+0 8-bit sRGB 467KB 0.000u 0:00.008
如果只需要获取宽高:

$identify -format “%wx%h” image.png
2,放大,缩小 -resize
$convert image.png -resize 200×200 resize.png
也可以按照比例(缩小一半):

$convert image.png -resize 50% resize.png
还可以多次缩放(先缩小一半,再放大一倍,效果就是变模糊了):

$convert image.png -resize 50% -resize 200% resize.png
3,放大,缩小 -sample
与resize的区别在于-sample只进行了采样,没有进行插值,所以用来生成缩略图最合适
$convert image.png -sample 50% sample.png
这个处理的效果就是马赛克:
$convert image.png -sample 10% -sample 1000% sample.png
4,裁剪 -crop
从(50,50)位置开始,裁剪一个100X100大小的图片:
$convert image.png -crop 100×100+50+50 crop.png
如果不指定位置,则按照这个大小分隔出小图片,这个命令生成crop-0.png,crop-1.png,crop-2.png……:
$convert image.png -crop 100×100 crop.png
可以指定裁剪位置的相对位置 -gravity:
$convert image.png -gravity northeast -crop 100×100+0+0 crop.png
-gravity即指定坐标原点,有northwest:左上角,north:上边中间,northeast:右上角,east:右边中间……
5,旋转 -rotate
$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
6,合并
合并指的是将一张图片覆盖到一个背景图片上:
$convert image.png -compose over overlay.png -composite newimage.png
-compose指定覆盖操作的类型,其中over为安全覆盖,另外还有xor、in、out、atop等等
覆盖的位置可以通过-gravity指定:
$convert image.png -gravity southeast -compose over overlay.png -composite newimage.png
这是将图片覆盖到底图的右下角。
7,更改图片的alpha通道
分两步:
$convert image.png -define png:format=png32 image32.png
$convert image32.png -channel alpha -fx “0.5” imagealpha.png
这个命令首先将image.png的格式改为png32(确保有alpha通道),然后更改alpha通道置为0.5,也就是半透明,值的范围为0到1.0
可以使用将一张透明图片覆盖到原图上的方式做水印图片:
$convert image.png -gravity center -compose over overlay.png -composite newimage.png
$convert image.png -gravity southeast -compose over overlay.png -composite newimage.png
8,拼接
横向拼接(+append),下对齐(-gravity south):
$convert image1.png image2.png image3.png -gravity south +append result.png
纵向拼接(-append),右对齐(-gravity east):
$convert image1.png image2.png image3.png -gravity east -append result.png
9,格式转换
$convert image.png image.jpg
$convert image.png -define png:format=png32 newimage.png
10,文字注释
$convert image.png -draw “text 0,20 ‘some text'” newimage.png
从文件text.txt中读取文字,指定颜色,字体,大小,位置:
$convert source.jpg -font xxx.ttf -fill red -pointsize 48 -annotate +50+50 @text.txt result.jpg
11,去掉边框
$convert image.png -trim -fuzz 10% newimage.png

发表评论