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

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

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

图片缩放(采样并插值)

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

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

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

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

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

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

图片抽样

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

$convert image.png -sample % sample.png  

图片切割

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

convert .png -crop 40x40 test5.png

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

convert -.png -crop 320x200++ test.png

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

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

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

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

图片旋转

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

$convert image.png -rotate  rotate.png 

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

$convert image.png -backround black -rotate  rotate.png
$convert image.png -background # -rotate rotate.png
$convert image.png -background rgba(,,,) -rotate 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  -annotate ++ @text.txt result.jpg

去掉图片边框

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

改变背景色

使用convert来批量处理图片的更多相关文章

  1. 安装glue,用glue批量处理图片的步骤

     glue批量处理图片:http://glue.readthedocs.io/en/latest/quickstart.html#and-why-those-css-class-names 首先需要安 ...

  2. photoshop动作面板批量处理图片边框技巧

    1,想给图片加上边框,在不改变图片大小的前提下,可以这样做:ctrl+a,全选图片,然后“编辑”-----“描边”,在跳出来的选项卡里面可以设置边框颜色,大小,位置,及混合模式, ,我们设置好了,就可 ...

  3. PS如何批量处理图片

    喜爱摄影的朋友可能都有这样的体会,相机里面存了大量的图片,一般都是2048×1536或者更大像素的照片,每张都有1M以上,如果设置的清晰度高,则照片就更大,这样的图片是无法上传到博客中的(博客要求每张 ...

  4. Shell 命令行批量处理图片文件名

    Shell 命令行批量处理图片文件名 从网上下载了一堆图片,有的是*.jpg的,有的是*.jpeg的.并且文件名有长有短,很是糟心.因此,我想把这些文件给全部整理好,当然是用shell来处理啦! 说干 ...

  5. 使用IMAGEMAGICK的CONVERT工具批量转换图片格式

    使用IMAGEMAGICK的CONVERT工具批量转换图片格式 http://www.qiansw.com/linux-imagemagick-convert-img.html Home > 文 ...

  6. ps批量处理图片

    刚刚有朋友问,ps咋做批量动作呢,其实特别简单,基本一劳永逸,用尺寸做个例子,大家看看就知道了.

  7. Photoshop 批量处理图片

    不论什么你想反复进行的操作都能够通过创建 Photoshop 批处理程序来完毕.比如.你想批量改变图片的大小,就能够通过下面操作来实现. 1.打开随意一张图片,在动作面板中,点击新建button 2. ...

  8. convert图像格式批量转换

    问题:利用GMT绘制生成了eps格式的图像,为了将图像插入到word中,且保持较高的分辨率,利用convert进行图像格式转换,将eps转换成tiff格式. code:  $i ${name}.tif ...

  9. PS教程:如何批量处理图片

    1.我们先准备两个文件夹,一个用来装你要处理的图片,可以是几百上千张,另一个是空文件夹,用来装等下处理好的图片. 2.打开PS,打开未处理文件夹里的任何一张图片. 3. 在红圈中点击,新建一个动作. ...

随机推荐

  1. js 随笔

    setInterval:即使在方法中使用了stopInterval这个方法也要执行完才会停止自行重复执行,解决:使用return false来跳出方法. JS string和num:当一个是字符串数字 ...

  2. Collections和Arrays常用方法

    Collections:常见方法: 1, 对list进行二分查找: 前提该集合一定要有序. int binarySearch(list,key); //必须根据元素自然顺序对列表进行升级排序 //要求 ...

  3. java:读/写配置文件

    package jimmy; import java.io.*; import java.util.Properties; public class Program { public static v ...

  4. Redirect和Dispatcher 区别

    使用forward是服务跳转,浏览器不知道它所请求的具体资源来源,浏览器的地址栏不会变:使用redirect,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL ...

  5. 利用Canvas进行绘制XY坐标系

    首先来一发图 绘制XY的坐标主要是利用Canvas setLeft和setBottom功能(Canvas内置坐标的功能) 1.首先WPF中的坐标系都是从左到右,从上到下的 即左上角位置(0,0)点,所 ...

  6. [转]Android Studio创建Xposed模块项目时BridgeApi的正确添加方式

    使用Android Studio创建的空项目作为Xposed Module App,对于Api Jar包的引用方式,一开始是按照傻瓜式Jar Lib的处理方式,复制XposedBridgeApi-54 ...

  7. .net 估计要死在你手里了

    最近不太爽,想换工作,上这些知名的招聘网站,一搜 .net 心凉了一截,很少有大公司用.net,工资也不是很高. 不用我多说什么,想必很多人应该有类似经历,只是打了牙往肚子里咽. 来两副图: 最近用滴 ...

  8. Hotspot内存溢出测试

    一.堆溢出 在执行代码时通过设置堆的最小值-Mms以及堆的最大值-Mmx来控制堆的大小,-XX参数dump出堆内存快照以便对内存溢出进行分析.通过创建大量对象来使堆溢出,当堆内存溢出时会提示OutOf ...

  9. JavaScript instanceof 运算符深入剖析

    简介: 随着 web 的发展,越来越多的产品功能都放在前端进行实现,增强用户体验.而前端开发的主要语言则是 JavaScript.学好 JavaScript 对开发前端应用已经越来越重要.在开发复杂产 ...

  10. js中的forEach

    chrome和firefox支持数组的forEach,但不支持对象的forEach,IE啥都不支持 jquery中的$.each(ArrayOrObject,function)既可以遍历数组又可以遍历 ...