Linux下用ImageMagick玩图像魔术【转】

本文转载自:http://www.linuxdiyf.com/linux/11680.html

不管你知不知道,现在是一个用ImageMagick的好机会,至少,如果你是一个Linux用户的话。这是一个藏在很多图形相关的应用程序后边的图像处理器,并且有着很充分的理由。有了这个工具,你可以在命令行或者脚本/应用程序里面进行一大堆的常见图像操作和转换。ImageMagick可以对图像完 成转换、变幻、绘制、装饰、动画以及混合等操作。它既可以在命令行上进行快速操作,也可以集成到一个复杂的软件套装里面。这份指南包括了那些最具“魔术” 性质的ImageMagick特征,并提供了如何使用它来完成日常任务的操作示例。

一个关于convert的提示:在本文中convert这 个命令名将会多次被提及。这是访问ImageMagick功能的数个命令中的一个,并不单指类型之间的转换。我们用convert这个词开始的一个命令并不见得就是将图像从一种格式转换到另一种 格式。


获取ImageMagick

在许多Linux系统上ImageMagick是已经预装的,因此你完全不必担心关于安装的问题。查找它的一个简单办法是打开命令行并且输入

which convert

如果它给出了类似于/usr/bin/convert的结果,那么一切都已就绪,可以开始下一节了。如果没有,它也应该在你发行版的标准仓库中。Debian和Ubuntu的用户可以这样获取之

sudo apt-get install imagemagick


转换基本的图像类型

ImageMagick在完成简单图像转换方面很强大。比如,转换JPG到PNG就这么简单:

convert myPicture.jpg myPicture.png

一个很重要的提示是convert命令会在一个拷贝的文件上进行操作。使用转换操作不会替换或者覆盖你的原始图像。


简单变换

转换图像的时候,你可以增加一些选项标志以完成诸如旋转、改变大小和裁剪之类的变换操作。如上所述,我们会使用convert命令,但这并不意味着必须选择一种不同的输出类型。

将单个图像旋转90度

convert -rotate 90 MyPicture.jpg MyPicture-rotated.jpg


文件名展开/通配符/批处理

文件名展开(Globbing)是一个用通配符(比如"*")来代表一组文件的常用术语。ImageMagick支持命令行上的文件名展开,因此你 可以在使用通配符来处理一组文件。比如,要将一个目录下的所有JPG 文件转换成PNG文件,你可以使用类似于下面这样的命令

convert *.jpg image.png

这样会创建一批新的PNG文件,名称为image-0.png, image-1.png, image-2.png, 等等。


创建GIF动画

ImageMagick的智能命令解析意味着它能够基于你所指定的输入类型猜测你最可能想做什么操作。在前面那个例子中,我们使用的是convert *.jpg image.png,而ImageMagick为每个JPG文件创建了一个独立的拷贝。如果我们把".png"替换 成".gif"会发生什么呢?答案是不会有多个GIF文件,而是创建一个混合了所有JPG文件的动态GIF图像。

convert *.jpg myanimated.gif


文本效果

使用ImageMagick,你甚至可以从命令行获取文本病渲染成图形。在本例中,我们为渲染器指定了背景颜色、文本颜色、字体、字号和文本内容。 这里我手动指定了一个TTF字体的路径。

convert -background lightblue -fill yellow -font /usr/share/fonts/truetype/thai/Purisa.ttf -pointsize 72 label:ImageMagick rendertext.png


注解/水印

有时候你可能需要添加一些文本或者徽标/图形到一个已有的图像文件。为了这个目的你要使用-append选项。在本例中,我在图像的下方添加了一个长条并带有提示内容。如果我有个叫tux.jpg的 文件,我可以用下面这个命令在下方添加一条提示:

convert tux.jpg -background Khaki label:'This is Tux!' -gravity Center -append tux_annotated.jpg

注:以上图片上传到红联Linux系统教程频道中。


结论这里展示的一些例子只是稍微触及了一下ImageMagick的表面。如果花上点时间实践一下,并适当参照这个怪兽级指南的帮助,你可以用这个程序完成很多奇妙的事情。你也并不是非得使用命令行,因为ImageMagick提供了C、C++、Java、.NET、Python等各种语言的API。如果你有什么用ImageMagick工作的小故事,请在评论中告诉我们!

原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/7405817.html