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图像处理系统使用方法

  1. 显示图像文件详细信息
    gm identify a.jpg

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

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

  4. 显示图像
    gm display ‘vid:*.jpg’

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

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

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

  1. 在图像上添加文字
    gm convert -font Arial -fill blue -pointsize 18 -draw “text 10,10 ‘your text here’” test.tif test.png

  2. 从gif文件中抽取第一帧
    gm convert “Image.gif[0]” first.gif

  3. 建立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
(对每一帧手动指定延时)

  1. 截屏
    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的命令行使用示例的更多相关文章

  1. ImageMagick简介、GraphicsMagick、命令行使用示例

    http://elf8848.iteye.com/blog/382528 ImageMagick资料 ------------------------------------------------- ...

  2. (转)GraphicsMagick、命令行使用示例

    GraphicsMagick是从 ImageMagick 5.5.2 分支出来的,但是现在他变得更稳定和优秀,GM更小更容易安装.GM更有效率.GM的手册非常丰富GraphicsMagick的命令与I ...

  3. mac svn命令行使用入门

    本文转载至 http://blog.sina.com.cn/s/blog_6bfa2fc10101euf6.html   mac svn命令行使用入门 1. 初始化项目 svn import /Use ...

  4. 最有用的Linux命令行使用技巧集锦

    最近在Quora上看到一个问答题目,关于在高效率Linux用户节省时间Tips.将该题目的回答进行学习总结,加上自己的一些经验,记录如下,方便自己和大家参考. 下面介绍的都是一些命令行工具,这些工具在 ...

  5. 【Linux工具】svn命令行使用实例

    引言 网上有这么多介绍 svn 使用的文章,为什么还要写?因为它们深入不浅出,平铺不分类,理论不实际,看完也记不住. 本文先介绍基本用法,后进行实例演练.不求大而全,只求熟练常用,自行用 svn he ...

  6. python命令行使用的问题

    python命令行使用的时候要注意一个陷阱,就是如果某个语句不是在>>>下执行的,而是在...下执行的,那么它可能没有执行成功. 例如如下没有成功,原因是上面有一句注释,导致没有执行 ...

  7. Linux修改权限命令chmod用法示例

    Linux公社 2020年10月13日 来自:Linux迷 网址:https://www.linuxmi.com/linux-chmod.html Linux中的Chmod命令用于更改或分配文件和目录 ...

  8. Apache Commons CLI 开发命令行工具示例

    概念说明Apache Commons CLI 简介 虽然各种人机交互技术飞速发展,但最传统的命令行模式依然被广泛应用于各个领域:从编译代码到系统管理,命令行因其简洁高效而备受宠爱.各种工具和系统都 提 ...

  9. Rsync(远程同步): linux中Rsync命令的实际示例

    rsync的 ( 远程同步 )为在Linux / Unix系统局部 拷贝和同步文件和目录远程以及一个最常用的命令. 随着rsync命令的帮助,您可以复制并在目录中远程和本地同步数据,在磁盘和网络,进行 ...

随机推荐

  1. 微信企业号C#开发配置API

    微信开发第一步 :   配置API,实现接收消息服务配置 1.在下图界面先填好内容,事件消息处理可自行选择,我这里是没处理的 2.第二步: 使用vs 进行代码的编写,以下是我的代码.LogTextHe ...

  2. php+openresty 部署安装

    1. ecs 购买 地域: 华北 2 可用区: 随机分配 安全组 ID: sg-2533jog6k I/O 优化实例: I/O 优化实例 实例规格: 1 核 1GB 网络类型: 经典网络 带宽: 1M ...

  3. Emgu.CV(一)

    由于这块的知识不少,会分好几期写完 什么是OpenCV? OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效--由一 ...

  4. git无法pull仓库refusing to merge unrelated histories

    本文讲的是把git在最新2.9.2,合并pull两个不同的项目,出现的问题如何去解决fatal: refusing to merge unrelated histories 我在Github新建一个仓 ...

  5. 在 Arch 下编译 OpenWRT cmcurl 问题与解决方案

    0 现象 在 Arch 下编译 OpenWRT (15.05) cmcurl 时报错: [ 28%] Linking C executable LIBCURL lib/libcmcurl.a(open ...

  6. Ajax笔记 XHR XMLHttpRequest

    XMLHttpRequest    xhr    XmlHttpRequest var request ;    if(Windows.XMLHttpRequest)    {    request ...

  7. Maven 开发hibernate存在的诸多问题

    项目结构: 开发平台: maven version 3.5 eclipse 4. 7 oxyen 最新:hibernate 5.x 引入问题 官网提供的必需选择只有 这个 当然还需要我们单独配置mys ...

  8. jdk8 JAVA_OPTS

    JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -Djava. ...

  9. 引入js文件,ajax不执行操作

    今天写了一个页面,在页面中写的可以执行,但是放到js里面,引入到页面,ajax却不执行了,仔细一看原来是路径的原因 ${pageContext.request.contextPath} 为获取项目名称 ...

  10. awake()和start()还有update(),fixedupdate()的差别

    1.首先看一下untiy官方对awake()和start()的定义 awake()和start()函数会在脚本加载后自动调用,awake()会先被调用,即使脚本未被调用.最好用来设置脚本之间的引用和初 ...