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

转自:http://blog.csdn.net/pb09013037/article/details/44221809


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

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

1,获取图片信息

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $identify image.png  
  2. image.png PNG 559x559 559x559+0+0 8-bit sRGB 467KB 0.000u 0:00.008  

如果只需要获取宽高:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $identify -format "%wx%h" image.png  

2,放大,缩小 -resize

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -resize 200x200 resize.png  

也可以按照比例(缩小一半):

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -resize 50% resize.png  

还可以多次缩放(先缩小一半,再放大一倍,效果就是变模糊了):

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -resize 50%  -resize 200%  resize.png  

3,放大,缩小 -sample

与resize的区别在于-sample只进行了采样,没有进行插值,所以用来生成缩略图最合适
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -sample 50% sample.png  
这个处理的效果就是马赛克:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -sample 10% -sample 1000% sample.png  

4,裁剪 -crop

从(50,50)位置开始,裁剪一个100X100大小的图片:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -crop 100x100+50+50 crop.png  
如果不指定位置,则按照这个大小分隔出小图片,这个命令生成crop-0.png,crop-1.png,crop-2.png……:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -crop 100x100 crop.png  
可以指定裁剪位置的相对位置 -gravity:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -gravity northeast -crop 100x100+0+0 crop.png  
-gravity即指定坐标原点,有northwest:左上角,north:上边中间,northeast:右上角,east:右边中间……

5,旋转 -rotate

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -rotate 45 rotate.png  
默认的背景为白色,我们可以指定背景色:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -backround black -rotate 45 rotate.png  
  2. $convert image.png -background #000000 -rotate 45 rotate.png  
还可以指定为透明背景色:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -background rgba(0,0,0,0) -rotate 45 rotate.png  

6,合并

合并指的是将一张图片覆盖到一个背景图片上:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -compose over overlay.png -composite newimage.png  
-compose指定覆盖操作的类型,其中over为安全覆盖,另外还有xor、in、out、atop等等
覆盖的位置可以通过-gravity指定:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -gravity southeast -compose over overlay.png -composite newimage.png  
这是将图片覆盖到底图的右下角。

7,更改图片的alpha通道

分两步:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -define png:format=png32  image32.png  
  2. $convert image32.png -channel alpha -fx "0.5" imagealpha.png  
这个命令首先将image.png的格式改为png32(确保有alpha通道),然后更改alpha通道置为0.5,也就是半透明,值的范围为0到1.0
可以使用将一张透明图片覆盖到原图上的方式做水印图片:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -gravity center -compose over overlay.png -composite newimage.png  
  2. $convert image.png -gravity southeast -compose over overlay.png -composite newimage.png  

8,拼接

横向拼接(+append),下对齐(-gravity south):
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image1.png image2.png image3.png -gravity south +append result.png  
纵向拼接(-append),右对齐(-gravity east):
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image1.png image2.png image3.png -gravity east -append result.png  

9,格式转换

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png image.jpg  
  2. $convert image.png -define png:format=png32 newimage.png  

10,文字注释

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $convert image.png -draw "text 0,20 'some text'" newimage.png  
从文件text.txt中读取文字,指定颜色,字体,大小,位置:
[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. $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


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值