ImageMagick 是一个用于查看、编辑位图文件以及进行图像格式转换的开放源代码软件套装,它可以读取、编辑超过100种图象格式。它以 ImageMagick许可证(一个类似BSD的许可证)发布。
ImageMagick (TM) 是一个免费的创建、编辑、合成图片的软件,它可以读取、转换、写入多种格式的图片,图片切割、颜色替换、各种效果的应用,图片的旋转、组合、文本、直线、多边形、椭圆、曲线、附加到图片伸展旋转。
ImageMagick 是免费软件:全部源码开放,可以自由使用、复制、修改、发布。它遵守GPL许可协议,它可以运行于大多数的操作系统,它的大多数功能的使用都来源于命令行 工具。通常来说,它可以支持以下程序语言:Perl、C、C++、Python、PHP、Ruby、Java;现成的ImageMagick接口 (PerlMagick,、Magick++、PythonMagick、MagickWand for PHP、RubyMagick and JMagick)是可利用的,这使得自动的动态的修改创建图片变为可能,ImageMagick支持至少90种图片格式。
功能及特点
ImageMagick 主要由大量的命令行程序组成,而不提供像Adobe Photoshop、GIMP这样的图形界面。但是,ImageMagick也提供了一个基于X Window的简易GUI:IMDisplay。它还为很多程序语言提供了API库,Imagemagick使用特征签名识别文件类型。
很多程序使用ImageMagick创建缩略图,如MediaWiki、phpBB和vBulletin,还有其它一些程序如LyX使用ImageMagick转换图片格式。在perl语言中,ImageMagick还有一个API叫PerlMagick。
格式转换:从一种格式转换成图像到另一个(例如 PNG 转 JPEG)
变换:缩放,旋转,裁剪,翻转或修剪图像
透明度:使图像的部分变为透明
附加:添加形状或一帧到图像
装饰:添加边框或帧图像
特效:模糊,锐化,阈值,或色彩图像动画:创建一个从GIF
文本及评论:插入描述或艺术图像中的文字
图像识别:描述的格式和图像性能
综合:重叠了一个又一个的图像
蒙太奇:并列图像画布上的图像缩略图
电影支持:读写图像的共同使用的数字电影工作方式
图像计算器:应用数学表达式的图像或图像通道
离散傅立叶变换:实现正向和反向的DFT
高动态范围图像:准确地表现了从最明亮的阳光直射到最深最黑暗的阴影找到真正的幕后广泛的强度水平
加密或解密图片:转换成不懂乱码,然后再返回普通图像
虚拟像素支持:方便以外区域的图像像素
大图像支持:读过程,或写mebi和吉比像素的图像尺寸
执行:ImageMagick的是线程安全的,利用内部算法OpenMP的功能及快速的双核和四核处理器技术提供窗口优势
异构分布式处理:某些算法可以在跨越的CPU、GPU,以及其他处理器组成的异构平台音乐会执行速度提高。
文件格式转换
ImageMagick最基本的一个功能是准确高效地转换图片的格式,请参考ImageMagick支持的格式列表。
特效
ImageMagick包括了大量用于特效的滤镜和扩展功能。
ImageMagick? is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 100) including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF. Use ImageMagick to scale, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.
The functionality of ImageMagick is typically utilized from the command line or you can use the features from programs written in your favorite language. Choose from these interfaces: G2F (Ada), MagickCore (C), MagickWand (C), ChMagick (Ch), ImageMagickObject (COM+), Magick++ (C++), JMagick (Java), L-Magick (Lisp), NMagick (Neko/haXe), MagickNet (.NET), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), IMagick (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick (Tcl/TK). With a language interface, use ImageMagick to modify or create images dynamically and automagically.
ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you may freely use, copy, modify, and distribute in both open and proprietary applications. It is distributed under the Apache 2.0 license, approved by the OSI and recommended for use by the OSSCC.
The ImageMagick development process ensures a stable API and ABI. Before each ImageMagick release, we perform a comprehensive security assessment that includes memory and thread error detection to prevent security vulnerabilities.
Features
* Format conversion: convert an image from one format to another (e.g. PNG to JPEG).
* Transform: resize, rotate, crop, flip or trim an image.
* Transparency: render portions of an image invisible.
* Draw: add shapes or text to an image.
* Decorate: add a border or frame to an image.
* Special effects: blur, sharpen, threshold, or tint an image.
* Animation: create a GIF animation sequence from a group of images.
* Text & comments: insert descriptive or artistic text in an image.
* Image identification: describe the format and attributes of an image.
* Composite: overlap one image over another.
* Montage: juxtapose image thumbnails on an image canvas.
* Generalized pixel distortion: correct for, or induce image distortions including perspective.
* Morphology of shapes: extract features, describe shapes and recognize patterns in images.
* Motion picture support: read and write the common image formats used in digital film work.
* Image calculator: apply a mathematical expression to an image or image channels.
* Discrete Fourier transform: implements the forward and inverse DFT.
* High dynamic-range images: accurately represent the wide range of intensity levels found in real scenes ranging from the brightest direct sunlight to the deepest darkest shadows.
* Encipher or decipher an image: convert ordinary images into unintelligible gibberish and back again.
* Virtual pixel support: convenient access to pixels outside the image region.
* Large image support: read, process, or write mega-, giga-, or tera-pixel image sizes.
* Threads of execution support: ImageMagick is thread safe and most internal algorithms are OpenMP-enabled to take advantage of speed-ups offered by multicore processor chips.
* Heterogeneous distributed processing: certain algorithms are OpenCL-enabled to take advantage of speed-ups offered by executing in concert across heterogeneous platforms consisting of CPUs, GPUs, and other processors.
* ImageMagick on the iPhone: convert, edit, or compose images on your iPhone.
ImageMagick命令行工具
[ convert | identify | mogrify | composite | montage | compare | display | animate | import | conjure ]
ImageMagick 包括一组命令行工具来操作图片。你大部份习惯每次编辑图片都提供图形用户接口 (GUI) 编辑图像就像GIMP和PhotoShop一样。然而,一个图形用户接口不总是方便的。假如你想要从一个网页动态地处理一个图像,或者你在不同时间生成一 样的或不同的图像,想要对许多图像或重复特定应用相同的操作。对于操作的这些类型,处理公用程序命令行工具是一个好的选择。
在下面的段落中,可以找到命令行工具的简单短描述。点击程序名称可以得到关于这个程序的具体用法。如果你想得到更多的关于ImageMagick,请仔细阅读以下命令行工具的使用方法:
convert
转换图像格式和大小、模糊、裁剪、驱除污点、抖动、临近、图片上画图片、加入新图片、生成缩略图等。
identify
描述一个或较多图像文件的格式和特性。
mogrify
按规定尺寸制作一个图像、模糊、裁剪、抖动等,Mogrify改写最初的图像文件然后写到一个不同的图像文件。
composite
根据一个图片或多个图片组合生成图片。
montage
创建一些分开的要素图像。在含有要素图像任意的装饰图片,如边框、结构、图片名称等。
compare
在算术上和视觉上评估不同的图片及其它的改造图片。
display
如果你拥有一个X server的系统,它可以按次序的显示图片。
animate
利用X server显示动画图片。
import
在X server或任何可见的窗口上输出图片文件,你可以捕获单一窗口,整个的荧屏或任何荧屏的矩形部分。
conjure
解释执行 MSL (Magick Scripting Language) 写的脚本。
———————————————
关于imagemagick convert的简单用法
1、批量图像格式转换
如果想将某目录下的所有jpg文件转换为png文件,只要在命令行模式下输入:
for %f in (*.jpg) do convert “%f” “%~nf.png”
for i in $(ls); do echo ‘convert photo: ‘ $i && convert $i -quality 40 ../product/$i; done
2、对所有图像进行同一操作
譬如,批量生成某目录下所有PNG图像文件的缩略图(大小为80×40):
for %f in (*.png) do convert “%f” -sample 80×40 “%~nf_sample.png”
类似的,将某目录下所有PNG图像旋转90度的操作为:
for %f in (*.png) do convert “%f” -rotate 90 “%~nf_rotate.png”
还可以进行批量裁剪、淡化、抖动、炭化、加边框、圆角等等一系列操作。
3、在图像上加上文字说明
如果你有大量图片需要发布,在所有图片上加上版权说明是很明智的做法。用ImgeMagick可以很容易的实现:
convert 1.png -fill white -pointsize 13 -draw “text 10,15 ‘FreeOA 2010'” 2.png
可以用-font指定字体,这时需要安装Ghostscript支持: http://www.cs.wisc.edu/~ghost/
可以通过’-list font’这个选项来查看系统中可用的字体列表。
还可以用composite命令在所有图片上加上水印,有兴趣的看这里:
http://www.imagemagick.org/script/composite.php
———————————————
convert -sample 100×20 input.jpg output.jpg
上述命令生成一个100×20的缩略图
更好的方法是用等比例缩放,像这样,统一生成1/4的缩略图
convert -sample 25%x25% input.jpg output.jpg
如果写成脚本,就是像这个样子
for img in `ls *.jpg`
do
convert -sample 25%x25% ${img} thm${img}
done
加注图片
convert -font fonts/font.ttf -stroke color -fill color -pointsize size
-draw ‘text 10,10 “String”‘ input.jpg output.jpg
-font 指定字体,因为这样我加注文字,
-stroke 描边用的颜色,
-fill 填充用的颜色,这里用none就可以画出空心字了,
-pointsize 加注字体大小,像素数,
-draw 是用来画,这里是文字,下面的位置10,10 是以图片左上角为原点坐标的。
向图像添加文本注释
有时您需要向图像添加文本注释。例如,假设您的公司拥有标准的名片图像,并希望在将名片发送到打印机之前将每个雇员的详细信息都添加到名片上面;另一个示例是为通过您网站上的在线课程的用户生成表示证书(presentation certificate)。
您可以使用下列命令行,为该图注释一些标识信息:
1. convert -font helvetica -fill white -pointsize 36
-draw ‘text 10,50 “FreeOA 2012, Ch”’
floriade.jpg comment.jpg
-font helvetica 将注释的字体设置为 Helvetica。也可以在此处指定字体文件的路径,中文字体推荐使用’文鼎PL简报宋-Regular’。这个示例给图像添加了标记,这样未经许可其 它网站就不能再使用该图像了,但它是使用位于非标准位置的字体来完成该任务的:
1. convert -font fonts/1900805.ttf -fill white -pointsize 36
-draw ‘text 10,475 “stillhq.com”’
floriade.jpg stillhq.jpg
-fill white 用白色而不是标准的黑色来填充字母。
-pointsize 36 以点为单位指定字母的大小,一英寸等于 72 点。
-draw ‘text 10,50 “…”’ 是一组绘图命令,在本例中是移动到位置 10, 50,然后绘制出双引号中的文本。使用单引号是因为如果需要绘制多个字,则绘图命令中需要使用双引号,而您不能在双引号中再用双引号。
在一次 ImageMagick 调用中执行多条命令
您已经看到了将命令与注释示例联系起来的示例。但可以将本文中提到的任意 ImageMagick 命令链接起来。例如,也许我们希望制作某图像的缩略图,然后对它应用发散,在发散发生之后,我们将应用炭笔效果:
1. convert -sample 25%x25% -spread 4
-charcoal 4 input.jpg output.jpg
用convert给图片加边框
convert -raise 5×5 input.jpg output.jpg
convert +raise 5×5 input.jpg output.jpg
以上命令分别用-,+边缘颜色的来达到处理边缘的效果!
convert -bordercolor red -border 5×5 input.jpg output.jpg
简单的加上5个像素宽的红边!
convert顾名思义就是对图像进行转化,它主要用来对图像进行格式的转化,同时还可以做缩放、剪切、模糊、反转等操作。
* 格式转化
比如把 foo.jpg 转化为 foo.png:
convert foo.jpg foo.png
如果要想把目录下所有的jpg文件都转化为gif,我们可借助于shell的强大功能:
find ./ -name “*.jpg” -exec convert {} {}.gif \;
转化后的gif名称为 *.jpg.gif ,这样看起来不太自然,没关系,我们可以再来一步:
rename .jpg.gif .gif *.jpg.gif
本来我想在find的时候,用basename来取得不带后缀的文件名的,这样就不会形成.jpg.gif这种丑陋的名子了,可是不知道为什么,就是不行;如果你知道的话,也可用shell script来完成上述的操作:
for i in *.jpg
do
convert $i `basename $i .jpg`.gif
done
或’for i in $(ls); do echo ‘convert photo: ‘ $i && convert $i -quality 40 ../product/$i; done’
我们还可用mogrify来完成同样的效果:
mogrify -format png *.jpg
上面命令将会把目录下面所有的jpg文件转化为png格式。
convert还可以把多张照片转化成pdf格式:
convert *.jpg foo.pdf
* 大小缩放
比如我们要为一个普通大小的图片做一个缩略图,我们可以这样
convert -resize 100×100 foo.jpg thumbnail.jpg
你也可以用百分比,这样显的更为直观:
convert -resize 50%x50% foo.jpg thumbnail.jpg
convert会自动地考虑在缩放图像大小时图像的高宽的比例,也就是说着新的图像的高宽比与原图相同。
我们还可以批量生成缩略图:
mogrify -sample 80×60 *.jpg
注意:这个命令会覆盖原来的图片,不过你可以在操作前,先把你的图片备份一下。
* 加边框
在一张照片的四周加上边框,可以用 -mattecolor 参数,比如某位同志牺牲了,我们需要为他做一张黑边框的像,可以这样:
convert -mattecolor “#000000″ -frame 60×60 remyou.jpg rememberyou.png
其中,”#000000″是边框的颜色,边框的大小为60×60
你也可以这样加边框:
convert -border 60×60 -bordercolor “#000000″ remyou.jpg rememberyou.png
* 在图片上加文字
convert -fill green -pointsize 40 -draw ‘text 10,50 “charry.org”‘ foo.png bar.png
上面的命令在距离图片的左上角10×50的位置,用绿色的字写下charry.org,如果你要指定别的字体,可以用-font参数。
* 模糊
高斯模糊:
convert -blur 80 foo.jpg foo.png
-blur参数还可以这样-blur 80×5。后面的那个5表示的是Sigma的值,这个是图像术语,我也不太清楚,总之,它的值对模糊的效果起关键的作用。
* 翻转
上下翻转:
convert -flip foo.png bar.png
左右翻转:
convert -flop foo.png bar.png
* 反色
形成底片的样子:
convert -negate foo.png bar.png
* 单色
把图片变为黑白颜色:
convert -monochrome foo.png bar.png
* 加噪声
convert -noise 3 foo.png bar.png
* 油画效果
我们可用这个功能,把一张普通的图片,变成一张油画,效果非常的逼真
convert -paint 4 foo.png bar.png
* 旋转
把一张图片,旋转一定的角度:
convert -rotate 30 foo.png bar.png
上面的30,表示向右旋转30度,如果要向左旋转,度数就是负数。
* 炭笔效果
convert -charcoal 2 foo.png bar.png
形成炭笔或者说是铅笔画的效果。
* 散射
毛玻璃效果:
convert -spread 30 foo.png bar.png
* 漩涡
以图片的中心作为参照,把图片扭转,形成漩涡的效果:
convert -swirl 67 foo.png bar.png
* 凸起效果
用-raise来创建凸边:
convert -raise 5×5 foo.png bar.png
执行后,你会看到,照片的四周会一个5×5的边,如果你要一个凹下去的边,把-raise改为+raise就可以了,其实凸边和凹边看起来区别并不是很大。
* 其他
其他功能都是不太常用的,如果你感兴趣的话,可以看它的联机文档。
import
import是一个用于屏幕截图的组件,下面列出的是我们常用的功能,其他的功能,你参考它的man好了。
* 截取屏幕的任一矩形区域
import foo.png
在输入上述的命令后,你的鼠标会变成一个十字,这个时候,你只要在想要截取的地方划一个矩形就可以了
* 截取程序的窗口
import -pause 3 -frame foo.png
回 车后,用鼠标在你想截的窗口上点一下即可。参数-frame的作用是告诉import,截图的时候把目标窗口的外框架带上,参数-pause的作用很重 要,你可以试着把它去掉,对比一下,你会发现,目标窗口的标题栏是灰色的,pause就是让import稍微延迟一下,等你的目标窗口获得焦点了,才开始 截图,这样的图才比较自然。
* 截取一个倾斜的窗口
如果想让你的截图比较cool,你可以把截取一个倾斜的窗口,方法如下:
import -rotate 30 -pause 3 -frame foo.png
* 截取整个屏幕
import -pause 3 -window root screen.png
注意,暂停了3秒钟,你需要在3秒钟内切换到需要截取的画面噢。
display
display应该是我们使用的最为频繁的图像处理软件了,毕竟,还是看的多
* 显示图片
display foo.png
如果你要显示多个文件,你可以使用通配符
display *.png
* 幻灯片
display -delay 5 *
每隔5个百分之秒显示一张图片
* 一些快捷键
1. space(空格): 显示下一张图片
2. backspace(回删键):显示上一张图片
3. h: 水平翻转
4. v: 垂直翻转
5. /:顺时针旋转90度
6. \:逆时针旋转90度
7. >: 放大
8. <: 缩小
9. F7:模糊图片
10. Alt+s:把图片中间的像素旋转
11. Ctrl+s:图象另存
12. Ctrl+d:删除图片
13. q: 退出
最新版本:V6.6
官方主页:http://www.imagemagick.org/