GraphicsMagick的命令行使用示例
GraphicsMagick是从 ImageMagick 5.5.2 分支出来的,但是现在他变得更稳定和优秀,GM更小更容易安装、GM更有效率、GM的手册非常丰富GraphicsMagick的命令与ImageMagick基本是一样的。
[ 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) 写的脚本。
GraphicsMagick图像处理系统使用方法
显示图像文件详细信息
gm identify a.jpg更改当前目录下*.jpg的尺寸大小,并保存于目录.thumb里面
gm mogrify -output-directory .thumbs -resize 320x200 *.jpg将三幅图像和并为一副图像
gm montage -mode concatenate -tile 3x1 image1.ppm image2.ppm image3.ppm concatenated.miff显示图像
gm display ‘vid:*.jpg’格式转换
gm convert a.bmp a.jpg
gm convert a.bmp a.pdf(转换为pdf)调整图像dpi和大小
gm convert -density 288 -geometry 25% image.gif image.gif
(缩小为原先的1/4,并且dpi为288)
gm convert -resize 640x480 image.gif image.gif 
(转换为640x480的图像)
在图像上添加文字
gm convert -font Arial -fill blue -pointsize 18 -draw “text 10,10 ‘your text here’” test.tif test.png从gif文件中抽取第一帧
gm convert “Image.gif[0]” first.gif建立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 
(对每一帧手动指定延时)
- 截屏 
gm import a.jpg
用鼠标点击所要截取的窗口,或者选择截屏区域,保存为a.jpg 
gm import -frame a.jpg 
保留窗口的边框
GraphicsMagick常用管理命令
- 查看版本后安装情况:gm identify -version
 
结果::打印出信息
- 识别图片:gm identify
 
如: gm identify  100CANON-1/IMG_4108.JPG 
结果:IMG_4108.JPG JPEG 3648x2736+0+0 DirectClass 8-bit 2.5M 0.000u 0:01
- 识别图片(高级):gm identify -verbose
 
如:gm identify  -verbose 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”);
GraphicsMagick的命令行使用示例的更多相关文章
- ImageMagick简介、GraphicsMagick、命令行使用示例
		
http://elf8848.iteye.com/blog/382528 ImageMagick资料 ------------------------------------------------- ...
 - (转)GraphicsMagick、命令行使用示例
		
GraphicsMagick是从 ImageMagick 5.5.2 分支出来的,但是现在他变得更稳定和优秀,GM更小更容易安装.GM更有效率.GM的手册非常丰富GraphicsMagick的命令与I ...
 - mac svn命令行使用入门
		
本文转载至 http://blog.sina.com.cn/s/blog_6bfa2fc10101euf6.html mac svn命令行使用入门 1. 初始化项目 svn import /Use ...
 - 最有用的Linux命令行使用技巧集锦
		
最近在Quora上看到一个问答题目,关于在高效率Linux用户节省时间Tips.将该题目的回答进行学习总结,加上自己的一些经验,记录如下,方便自己和大家参考. 下面介绍的都是一些命令行工具,这些工具在 ...
 - 【Linux工具】svn命令行使用实例
		
引言 网上有这么多介绍 svn 使用的文章,为什么还要写?因为它们深入不浅出,平铺不分类,理论不实际,看完也记不住. 本文先介绍基本用法,后进行实例演练.不求大而全,只求熟练常用,自行用 svn he ...
 - python命令行使用的问题
		
python命令行使用的时候要注意一个陷阱,就是如果某个语句不是在>>>下执行的,而是在...下执行的,那么它可能没有执行成功. 例如如下没有成功,原因是上面有一句注释,导致没有执行 ...
 - Linux修改权限命令chmod用法示例
		
Linux公社 2020年10月13日 来自:Linux迷 网址:https://www.linuxmi.com/linux-chmod.html Linux中的Chmod命令用于更改或分配文件和目录 ...
 - Apache Commons CLI 开发命令行工具示例
		
概念说明Apache Commons CLI 简介 虽然各种人机交互技术飞速发展,但最传统的命令行模式依然被广泛应用于各个领域:从编译代码到系统管理,命令行因其简洁高效而备受宠爱.各种工具和系统都 提 ...
 - Rsync(远程同步): linux中Rsync命令的实际示例
		
rsync的 ( 远程同步 )为在Linux / Unix系统局部 拷贝和同步文件和目录远程以及一个最常用的命令. 随着rsync命令的帮助,您可以复制并在目录中远程和本地同步数据,在磁盘和网络,进行 ...
 
随机推荐
- Android Annotations Eclipse 配置 (3)
			
Android Annotations 本来我想写个 Java 版本的<RESTful客户端库:RestClient>用于 Android 应用开发,结果发现不太好写,虽然用了 Dynam ...
 - CSS之 absoulte 属性
			
特性: absoulte 与 float 具有相同的特性:包裹性,与破坏性 absoulte 与 float 可以交替使用 不受 relative 限制的 absoulte 定位,行为表现上可以不 ...
 - [js插件开发教程]原生js仿jquery架构扩展开发选项卡插件
			
jquery插件一般是这么干的: $.fn.插件名称 = function(){}, 把插件的名称加在.fn上,在源码里面实际上是扩展到构造函数的原型对象上,如果你没看过jquery的源代码,或者你曾 ...
 - Android基础知识05—活动的生命周期
			
------ 活动的生命周期 ------ Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合.每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置.而每当我们按 ...
 - eclispe中安装hibernate插件
			
用eclispe玩ee的朋友,写配置文件的时候没有提示非常苦恼,而配置dtd文件还是没有得到解决,最后试了试安装插件解决了问题 地址:http://download.jboss.org/jbossto ...
 - 在打开Dreamweaver软件情况下,vs2010 asp项目无法调试
			
会出现以下情况,只要关闭Dreamweaver就可以正常调试vs2010 asp项目.
 - 做多了国际化项目,你怎么处理时区不同的各种blabla...问题
			
我们做的的都是国际化大项目,今天发现了个大bug,没错!是时区不同引起的,如果你觉得这还不简单,这样,这样,再这样不就可以了吗?我只能呵呵了. 先来普及一下基础知识 : 1.地球分为24时区,北京位于 ...
 - C#基本功之泛型
			
一.没有泛型之前 在没有泛型之前,我们是怎么处理不同类型的相同操作的: 示例1 //下面是一个处理string类型的集合类型 public class MyStringList { string[] ...
 - (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探
			
目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...
 - 微信小程序获取微信的openid
			
通过登录接口获取登录凭证,然后通过request请求后台获取openid,需要把后台域名放到小程序后台的request 合法域名内: 1.wx.login 获取登录凭证 2.wx.request 发 ...