ImageMagick简介、GraphicsMagick、命令行使用示例 (注;文章为转载)

标签: imagemagick 简介 graphicsmagick | 发表时间:2014-05-22 15:32 | 作者:lin_464025910
出处:http://www.iteye.com
ImageMagickGraphicsMagick图片处理
ImageMagick资料
------------------------------------------
[size=large]
----------------------------------[/size]
ImageMagick官网
ImageMagick Identify 命令行工具(官网)
ImageMagick 程序接口文档
ImageMagick使用示例(非常好的示例)

GraphicsMagick资料
----------------------------------------------------------------------------
GraphicsMagick官网
GraphicsMagick编程接口 
ImageMagick 程序接口  [b][/b]
Im4java 下载地址
IM4JAVA+GraphicsMagick处理网站图片 

命令行参数,说明文档
-------------------------------------------------------------
GraphicsMagick 命令行参数,说明文档
ImageMagick 命令行参数,说明文档
ImageMagick介绍
----------------------------------------------------------------------------
      ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。其全部源码开放,可以自由使用,复制,修改,发布。它遵守GPL许可协议。它可以运行于大多数的操作系统。
最为重要的是,ImageMagick的大多数功能的使用都来源于命令行工具。

GraphicsMagick介绍
----------------------------------------------------------------------------
GraphicsMagick是从 ImageMagick 5.5.2 分支出来的,但是现在他变得更稳定和优秀,GM更小更容易安装、GM更有效率、GM的手册非常丰富GraphicsMagick的命令与ImageMagick基本是一样的。


ImageMagick、GraphicsMagick的命令概览
----------------------------------------------------------------------------
[ convert | identify | mogrify | composite | montage | compare | display | animate | import | conjure ]

convert:转换图像格式和大小,模糊,裁剪,驱除污点,抖动,临近,图片上画图片,加入新图片,生成缩略图等。
identify:描述一个或较多图像文件的格式和特性。
mogrify:按规定尺寸***一个图像,模糊,裁剪,抖动等。Mogrify改写最初的图像文件然后写到一个不同的图像文件。
composite:根据一个图片或多个图片组合生成图片。
montage:创建一些分开的要素图像。在含有要素图像任意的装饰图片,如边框、结构、图片名称等。
compare:在算术上和视觉上评估不同的图片***其它的改造图片。
display:如果你拥有一个X server的系统,它可以按次序的显示图片
animate:利用X server显示动画图片
import:在X server或任何可见的窗口上输出图片文件。 你可以捕获单一窗口,整个的荧屏或任何荧屏的矩形部分。
conjure:解释执行 MSL (Magick Scripting Language) 写的脚本。

示例一:综合操作(ImageMagick命令行)----------------------------------------------------------------------------

Java代码  收藏代码
convert -crop 300x300+0+0 -resize 200x200 -colors 100 +profile "*" 1.jpg 1.png 


处理过程解释:
1、把当前目录1.jpg图片文件,从左上角(0,0)坐标为起点,裁剪一块300x300像素的部分。
2、然后把这部分缩小到200x200像素。
3、然后把颜色缩减到100色。
4、+profile "*"   , 意味着在图片文件里不存储Exif信息,以减小图片体积。
5、最后生成1.png,保存在当前目录。

注意:-resize会试图保留原图的原始长宽比例,因此不一定生成的图片和你指定的尺寸一定匹配,比如,如果2.jpg大小是400x200,所以如果用命令:convert 2.jpg -resize 100x100 2.png,那么生成的图片2.png的实际大小是100x50。

常用的参数用途说明:
-crop 宽x高+起点横坐标+起点纵坐标:裁剪图
-resize 宽x高!:改变尺寸,如果使用惊叹号,表示不保留视觉比例,强行改变尺寸匹配给定的宽和高;如果仅给定宽或者高,如“宽x”或“x高”形式的参数(“x高”与“宽x高”的效果是一样的),则以已知参数为基准按比例改变尺寸。
-colors 颜色数:设定图片采用的颜色数,如果是生成png或gif图片应指定这个参数
-quality 质量:设定jpeg图片输出质量,推荐采用80,此命令仅用于输出格式是jpg的情况,不应省略,省略的话默认质量是95,生成图片过大
+profile "*":图片中不存储Exif信息,必须使用,否则生成图片过大

示例二:生成缩略图(缩小图片) (ImageMagick命令行)----------------------------------------------------------------------------
Java代码  收藏代码
convert -sample 80x40 input.jpg output.jpg   (使用一个简单的算法生成缩略图,速度快,画质较低,适合生成100x100以下的图片) 
convert -resize 100x100 foo.jpg thumbnail.jpg (画质好) 
convert -resize 50%x50% foo.jpg thumbnail.jpg 
convert -resize 100x200 22.jpg(图片路径)   11.jpg(缩放后存放路径)   图片按比例缩放 
convert -resize 100x200\! 22.jpg(图片路径)   11.jpg(缩放后存放路径)   强制按给定的宽高缩放 



示例三:裁剪图片(ImageMagick命令行)----------------------------------------------------------------------------

Java代码  收藏代码
convert -crop  100(长)x200(高)+10(x坐标)+10(y坐标)   22.jpg(源图片路径)   11.jpg(缩放后存放路径)   
 

示例四:旋转图像  (ImageMagick命令行)----------------------------------------------------------------------------
Java代码  收藏代码
convert -rotate 90 input.jpg output.jpg 

示例五:获取文件信息 (ImageMagick命令行)----------------------------------------------------------------------------
Java代码  收藏代码
libtiff tiffinfo filename.tiff 


示例六:把图片变为黑白颜色(ImageMagick命令行)----------------------------------------------------------------------------
Java代码  收藏代码
convert -monochrome foo.png bar.png 

添加图片水印处理(ImageMagick命令行)
--------------------------------
假设把名为logo.gif的水印图标添加在原始图片(src.jpg)右下角,且水印的下边缘距原始图片10像素、右边缘距原始图片5像素。使用如下命令即可:
Java代码  收藏代码
convert src.jpg logo.gif -gravity southeast -geometry +5+10 -composite dest.jpg 


添加英文文字水印  (ImageMagick命令行)
-----------------------------------------------------
convert  -fill white -pointsize 24 -draw "text 10,15 'lifesinger 2006' "  1.png  2.png
文字坐标在:10x50的位置
可以用-font指定字体,这时需要安装Ghostscript支持。
如果安装IM、GM时,没有安装Ghostscript字体,会默认使用Linux系统的字体,目录是:/usr/share/fonts/default/Type1/

添加中文文字水印 (ImageMagick命令行)
-----------------------------------------------------
高版本的ImageMagick的方法
-------------------
convert -font C:\ImageMagick\font\fangzheng.ttf  -fill green -pointsize 40 -draw "text 10,50 '文字'" d:\bagImg\21.jpg d:\bagImg\22.jpg
参数说明: -font C:\ImageMagick\font\fangzheng.ttf    是指明Windows字体文件。
要高版本的ImageMagick同,在加中文文字水印时才不乱码。


低版本的ImageMagick的方法
-------------------
存在中文的情况:假设存有信息的文件叫t.txt,字体文件是msyh.ttf。
Java代码  收藏代码
方法1: 
//把文件t.txt中的信息生成图片txt.png, -transparent white让图片的背景透明,-size x30设置图片的高度 
convert -transparent white -font msyh.ttf -fill black -pointsize 24 label:@t.txt txt.png 
//把txt.png合成到src.jpg上 
convert src.jpg txt.png -gravity southeast -geometry +10+5 -composite dest.jpg 
 
方法2: 
convert src.jpg -transparent white -font msyh.ttf -fill black -pointsize 24 -size x30 label:@t.txt -gravity southeast -geometry +10+5 -composite dest.jpg 
 
方法3: 
mogrify -font msyh.ttf -pointsize 24 -fill black -weight bolder -gravity southeast -annotate +20+20 @"t.txt" src.jpg 
说明:上述第一、二种方法都有瑕疵,第二种背景不能变成透明,第一种虽然生成的图片可以透明,但是合成到原始图上效果不是很理想,第三种是完全透明的,所以推进用第三种方式来操作。






GraphicsMagick图像处理系统使用方法
-----------------------------------------------------
0. 显示图像文件详细信息
gm identify a.jpg

1.更改当前目录下*.jpg的尺寸大小,并保存于目录.thumb里面
gm mogrify -output-directory .thumbs -resize 320x200 *.jpg

2. 将三幅图像和并为一副图像
gm montage -mode concatenate -tile 3x1 image1.ppm image2.ppm image3.ppm concatenated.miff

3. 显示图像
gm display 'vid:*.jpg'

4. 格式转换
gm convert a.bmp a.jpg
gm convert a.bmp a.pdf(转换为pdf)

5. 调整图像dpi和大小
gm convert -density 288 -geometry 25% image.gif image.gif
(缩小为原先的1/4,并且dpi为288)

gm convert -resize 640x480 image.gif image.gif
(转换为640x480的图像)

6. 在图像上添加文字
gm convert -font Arial -fill blue -pointsize 18 -draw "text 10,10 'your text here'" test.tif test.png

7. 从gif文件中抽取第一帧
gm convert "Image.gif[0]" first.gif

8. 建立gif图像
gm convert -delay 20 frame*.gif animation.gif
gm convert -loop 50 frame*.gif animation.gif
(让动画循环50次)

gm convert -delay 20 frame1.gif -delay 10 frame2.gif -delay 5 frame3.gif animation.gif
(对每一帧手动指定延时)

9. 截屏
gm import a.jpg
用鼠标点击所要截取的窗口,或者选择截屏区域,保存为a.jpg

gm import -frame a.jpg
保留窗口的边框

GraphicsMagick常用管理命令
-----------------------------------------------------
查看版本后安装情况:gm identify -version
结果::打印出信息

识别图片:gm identify  /Users/zhaorai/Pictures/照片/100CANON-1/IMG_4108.JPG
结果:/Users/zhaorai/Pictures/照片/100CANON-1/IMG_4108.JPG JPEG 3648x2736+0+0 DirectClass 8-bit 2.5M 0.000u 0:01

识别图片(高级):gm identify  -verbose /Users/zhaorai/Desktop/4.png
结果:打印出很多信息。


GraphicsMagick缩放比例的精准控制
-----------------------------------------------------
原始图片是input.jpg,尺寸:160x120

只缩小不放大
gm convert input.jpg -resize "500x500>" output_1.jpg
加了>,表示只有当图片的宽与高,大于给定的宽与高时,才进行“缩小”操作。
生成的图片大小是:160x120,未进行操作
如果不加>,会导致图片被比等放大。

等比缩图  (缺点:产生白边)
gm convert input.jpg -thumbnail "100x100" output_1.jpg
生成的图片大小是:100x75

非等比缩图,按给定的参数缩图(缺点:长宽比会变化)
gm convert input.jpg -thumbnail "100x100!" output_2.jpg
生成的图片大小是:100x100

裁剪后保证等比缩图 (缺点:裁剪了图片的一部分)
gm convert input.jpg -thumbnail "100x100^" -gravity center -extent 100x100 output_3.jpg
生成的图片大小是:100x100,还保证了比例。不过图片经过了裁剪,剪了图片左右两边才达到1:1

填充后保证等比缩图 (缺点:要填充颜色,和第一种方法基本一样)
gm convert input.jpg -thumbnail "100x100" -background gray -gravity center -extent 100x100 output_4.jpg
生成的图片大小是:100x100,还保证了比例,同时没有对图片进行任何裁剪,缺失的部分按指定颜色进行填充。

裁剪、填充相结合 (缺点:最差的方法)
gm convert input.jpg -thumbnail "10000@ -background gray -gravity center -extent 100x100 output_5.jpg
生成的图片大小是:100x100,这次保证了大小和比例,其中的10000就是100x100的乘积,同时在填充和裁剪之间做了一个平衡。

位深度32 转为24
IE6,7,8不支持显示“位深度32”的图片,但IE9、火狐、谷歌浏览器就可以显示。
使用GM,把“位深度32”的图片转换为“位深度24”的图片
输入图片zzz.jpg就是“位深度32”的图片,输出图片 zzz_out.jpg就是“位深度24”的图片
gm convert -resize 100x100 -colorspace RGB zzz.jpg zzz_out.jpg
转完后,图片的颜色会有轻微变化。


在浏览器上选择图片裁剪的坐标
=================================
如果想让用户手动裁剪头片的话,就是在浏览器上选择图片裁剪的坐标,imgAreaSelect是个好选择。
imgAreaSelect is a jQuery plugin for selecting a rectangular area of an image.
http://odyniec.net/projects/imgareaselect/


======================其它内容=================================
Jmagick锐化图片功能
--------------------------------------------------
ImageInfo info = new ImageInfo(filepath+"pics.jpg");
MagickImage image = new MagickImage(info);
MagickImage sharpened = image.sharpenImage(1.0, 5.0);
sharpened.setFileName(filepath+"sharpened.jpg");
sharpened.writeImage(info);
主要是函数sharpenImage(double arg0, double arg1);
建议arg0=1.0 arg1=5.0
arg0为半径  arg1为阙值
这样做的目的:
明显会使图片变得清晰好看。

JMagick 常用技巧
--------------------------------------------
ImageMagick中使用+profile "*"   删除图片中不存储附加信息.
JMagick中,使用MagickImage类上的profileImage("*", null)方法,删除图片中不存储附加信息.
删除图片中的ICC,ICM, IPTC,8bim等信息
ImageMagick中使用-quality控制图片的品质,
JMagick中,使用ImageInfo类上的setQuality(80)方法,控制图片的品质

在Web应用(Resin,Tomcat)使用ImageMagick
-----------------------------------------
如果要在Web应用(Resin,Tomcat)使用ImageMagick,
需要再运行时加入参数: -Djmagick.systemclassloader=no
或者在程序中写入:System.setProperty("jmagick.systemclassloader", "no");


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [imagemagick 简介 graphicsmagick] 推荐:

ImageMagick简介、GraphicsMagick、命令行使用示例 (注;文章为转载)

- - Java - 编程语言 - ITeye博客
ImageMagickGraphicsMagick图片处理. ImageMagick资料. ImageMagick官网. ImageMagick Identify 命令行工具(官网). ImageMagick 程序接口文档. ImageMagick使用示例(非常好的示例). GraphicsMagick资料.

ImageMagick高清压缩图片-GraphicsMagick+im4java

- - 开源软件 - ITeye博客
之前有写过imageMagick压缩图片的文章,但是那篇文章中用到的是jmagick. JMagick是一个开源API,利用JNI(Java Native Interface)技术实现了对. ImageMagick API的Java访问接口,因此也将比纯Java实现的图片操作函数在速度上要快. JMagick只实现了ImageMagicAPI的一部分功能,它的发行遵循.

GraphicsMagick+im4java 图片处理

- - CSDN博客互联网推荐文章
最近团队内部分享GraphicsMagick+im4java 图片处理 就把如何安装,运行都统一整理一下. 在windows上安装ImageMagick:. download 地址: http://ftp.icm.edu.pl/pub/unix/graphics/GraphicsMagick/windows/.

linux JMagick和ImageMagick安装

- - CSDN博客互联网推荐文章
一、下载JMagick和ImageMagick. 三、安装ImageMagick. 四、安装并配置JMagick. # 拷贝libJMagick.so到JRE. # 拷贝magick-6.4.0.jar到install目录备份. 作者:chabale 发表于2013-5-15 15:31:24 原文链接.

尝试使用GraphicsMagick的缩略图功能

- kevH - 老王的技术手册 ( 我的新博客:http://huoding.com )
欢迎访问我的新主页:http://huoding.com/. 现在,对一个Web程序员来说,图像处理已经属于必会知识之一了. 且不说Flickr,Yupoo等专业图片分享网站,就算是一个和图片分享不沾边的网站,也会用到很多图片处理的功能,比如说:用户上传头像,然后自动生成缩略图. 常用的图片处理工具有GD,ImageMagick,GraphicsMagick等等.

PHP图像处理(一) GraphicsMagick介绍与安装

- We_Get - 博客园-首页原创精华区
GraphicsMagick概述. GraphicsMagick号称图像处理领域的瑞士军刀. 短小精悍的代码却提供了一个鲁棒、高效的工具和库集合,来处理图像的读取、写入和操作,支持超过88中图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF. 通过使用OpenMP可是利用多线程进行图片处理,增强了通过扩展CPU提高处理能力.

使用ImageMagick幫照片加上拍照時間浮水印

- - 簡睿隨筆
最近挑選了一些 小朋友的照片要沖洗出來給老人家翻看,為了方便辨識拍照的時間,因此想把拍照日期以浮水印的方式加到照片上,搜尋了好一陣子,沒想到免費的加浮水印的圖形工具、還要能加上檔名或拍照時間的還真難找. Windows最終找到一個功能頗齊全的 ImBatch,在Linux裡則發現 ImageMagick功能超強,而且還有Windows、Mac OS X、iOS等版本,最後就使用ImageMagick來處理了.

强大的图像处理库ImageMagick:命令行上的PhotoShop

- - CSDN博客推荐文章
前面讲到了 最简单的图像处理库CxImage,本文则推荐一个最强大的图像处理库ImageMagick,它被誉为命令行上的PhotoShop,而且被各大公司所采用. 1.ImageMagick简介. ImageMagick是一套功能强大、稳定而且开源的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件.

在Linux上将视频转换成动态gif图片 (附:ffmpeg和ImageMagick安装方法)

- - 操作系统 - ITeye博客
虽然曾经被认为是过时的艺术形式,但动态GIF图片现在复苏了. 如果你还没有留意到,不少在线分享和社交网络网站都开始支持动态GIF图片,例如, Tumblr, Flickr, Google+和 Facebook的部分地方. 由于在消费和共享上的容易,GIF的动画已经成为主流互联网文化的一部分了.

Flask-Babel 简介

- yinseny - python.cn(jobs, news)
本文有一个格式好看一点,并且有语法高亮的版本放在 readthedocs,欢迎浏览. 本文是原创,不是翻译,不过本文其实是谈翻译的. 话说用 wordpress 的 WYSIWYG 编辑器写这样的文章真痛苦啊,格式一不小心就乱了,本文是用 rst 写成,编译为 html,然后贴到这边来的. 最近用 Flask 给公司做了个小 web 应用,做的时候用英文了,现在要求翻译成中文.