http://elf8848.iteye.com/blog/382528

ImageMagick资料

----------------------------------------------------------------------------

ImageMagick官网

ImageMagick Identify 命令行工具(官网)

ImageMagick 程序接口文档

ImageMagick使用示例(非常好的示例)

GraphicsMagick资料

----------------------------------------------------------------------------

GraphicsMagick官网

GraphicsMagick编程接口

ImageMagick 程序接口

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命令行)----------------------------------------------------------------------------

  1. +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命令行)----------------------------------------------------------------------------

  1. convert -sample 80x40 input.jpg output.jpg   (使用一个简单的算法生成缩略图,速度快,画质较低,适合生成100x100以下的图片)
  2. convert -resize 100x100 foo.jpg thumbnail.jpg (画质好)
  3. %x50% foo.jpg thumbnail.jpg
  4. .jpg(图片路径)   11.jpg(缩放后存放路径)   图片按比例缩放
  5. .jpg(图片路径)   11.jpg(缩放后存放路径)   强制按给定的宽高缩放

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

  1. (长)x200(高)+10(x坐标)+10(y坐标)   22.jpg(源图片路径)   11.jpg(缩放后存放路径)

示例四:旋转图像  (ImageMagick命令行)----------------------------------------------------------------------------

  1. input.jpg output.jpg

示例五:获取文件信息 (ImageMagick命令行)----------------------------------------------------------------------------

  1. libtiff tiffinfo filename.tiff



示例六:把图片变为黑白颜色(ImageMagick命令行)----------------------------------------------------------------------------

  1. convert -monochrome foo.png bar.png
添加图片水印处理(ImageMagick命令行)

--------------------------------

假设把名为logo.gif的水印图标添加在原始图片(src.jpg)右下角,且水印的下边缘距原始图片10像素、右边缘距原始图片5像素。使用如下命令即可:

  1. +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。

  1. //把文件t.txt中的信息生成图片txt.png, -transparent white让图片的背景透明,-size x30设置图片的高度
  2. label:@t.txt txt.png
  3. //把txt.png合成到src.jpg上
  4. +5 -composite dest.jpg
  5. -size x30 label:@t.txt -gravity southeast -geometry +10+5 -composite dest.jpg
  6. -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");

ImageMagick简介、GraphicsMagick、命令行使用示例的更多相关文章

  1. GraphicsMagick的命令行使用示例

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

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

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

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

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

  4. mac svn命令行使用入门

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

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

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

  6. python命令行使用的问题

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

  7. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)

    我们以ByteArrayInputStream,拉开对字节类型的“输入流”的学习序幕.本章,我们会先对ByteArrayInputStream进行介绍,然后深入了解一下它的源码,最后通过示例来掌握它的 ...

  8. java io系列03之 ByteArrayOutputStream的简介,源码分析和示例(包括OutputStream)

    前面学习ByteArrayInputStream,了解了“输入流”.接下来,我们学习与ByteArrayInputStream相对应的输出流,即ByteArrayOutputStream.本章,我们会 ...

  9. java io系列04之 管道(PipedOutputStream和PipedInputStream)的简介,源码分析和示例

    本章,我们对java 管道进行学习. 转载请注明出处:http://www.cnblogs.com/skywang12345/p/io_04.html java 管道介绍 在java中,PipedOu ...

随机推荐

  1. 记——加快gradle 构建速度的经验

    Gradle作为一个新的构建系统,无疑在灵活,扩展,跨平台等各方面都表现得非常优秀,然而,它也有一点备受吐槽,就是速度慢.以下为本人使用gradle过程中,几次加快gradle构建速度的经验之谈. 本 ...

  2. objective-c如何在linux下进入Modern模式

    自从apple的obj-c进入2.0后,出现了相对于Legacy模式的Modern模式:Modern模式中出现了一些高级功能(比如ARC),并且出现了一些新的字面语法,新旧模式的差别可以参考apple ...

  3. PHP获取指定地区的天气

    在开发网站的时候用到天气查询,由于是基于Wordpress的 所以有很多限制,先建一个[weather.php]的文件,然后看代码: <?php //获取天气 $url = 'http://m. ...

  4. JavaScript设计模式之一封装

    对于熟悉C#和Java的兄弟们,面向对象的三大思想(封装,继承,多态)肯定是了解的,今天我想讲讲如何在Javascript中利用封装这个特性,开讲! 我们会把现实中的一些事物抽象成一个Class并且把 ...

  5. 开始记录学习java的笔记

    今天开始记录学习java的笔记,加油

  6. Java并发-线程安全性

    首先了解一下多线程的概念 多线程:两段或以上的代码同时进行,多个顺序执行流. 并发和并行的区别 并发:做一下这个做一下那个. 并行:同时进行. 线程和进程的区别 进程:资源分配的基本单位,运行中的程序 ...

  7. Maven打包详细流程

    方法一:cmd 控制台打包(比较不推荐) 首先安装maven插件百度下载一个,配置环境变量什么的~在cmd控制台能mvn version能有数据出现. 打包只需要到项目的根目录下~在cmd敲入mvn ...

  8. zlib 压缩输出缓冲区 overflow 问题

    [TOC] 问题 后台服务传包太大时,我们框架可以使用 zlib 库对响应进行压缩:在这次服务调试过程中,使用 zlib compress2 以 Z_BEST_COMPRESSION 模式进行压缩时, ...

  9. Python并发编程之线程中的信息隔离(五)

    大家好,并发编程 进入第三篇. 上班第一天,大家应该比较忙吧.小明也是呢,所以今天的内容也很少.只要几分钟就能学完. 昨天我们说,线程与线程之间要通过消息通信来控制程序的执行. 讲完了消息通信,今天就 ...

  10. Win10 UWP开发系列:解决Win10不同版本的Style差异导致的兼容性问题

    最近在开发一个项目时,遇到了一个奇怪的问题,项目依赖的最低版本是10586,目标版本是14393,开发完毕发布到商店后,很多用户报无法正常加载页面.经查,有问题的都是Win10 10586版本. 我上 ...