http://elf8848.iteye.com/blog/382528
2016-07-24 23:21
531 查看
ImageMagick资料
----------------------------------------------------------------------------
ImageMagick官网
ImageMagick Identify 命令行工具(官网)
ImageMagick 程序接口文档
ImageMagick使用示例(非常好的示例)
GraphicsMagick资料
----------------------------------------------------------------------------
GraphicsMagick官网
GraphicsMagick编程接口
ImageMagick 程序接口
Im4java 下载地址
IM4JAVA+GraphicsMagick处理网站图片
命令行参数,说明文档
-------------------------------------------------------------
GraphicsMagick 命令行参数,说明文档
ImageMagick 命令行参数,说明文档
ImageMagick介绍
----------------------------------------------------------------------------
ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。其全部源码开放,可以自由使用,复制,修改,发布。它遵守GPL许可协议。它可以运行于大多数的操作系统。
最为重要的是,ImageMagick的大多数功能的使用都来源于命令行工具。
[b]GraphicsMagick介绍[/b]
----------------------------------------------------------------------------
GraphicsMagick是从 ImageMagick 5.5.2 分支出来的,但是现在他变得更稳定和优秀,GM更小更容易安装、GM更有效率、GM的手册非常丰富GraphicsMagick的命令与ImageMagick基本是一样的。
ImageMagick、[b][b]GraphicsMagick[/b]的命令概览[/b]
----------------------------------------------------------------------------
[ 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");
更多compiste 定位信息
在使用imagemagick的时候,使用gravity重新定义坐标后,可以很容易让子元素与父元素的对齐方式达到想要的效果,让一切变得非常简单。比如把一张小图片叠加到背景图片的
正中位置,按照默认的坐标系统,那必须要先知道背景图片和小图片的宽度以及高度,然后才能计算出起始点的坐标,再通过-geometry来设置坐标点。
如 果使用gravity,把其设置center,即把中心作为坐标的原点,那么根本不需要计算起始坐标点,ImageMagicK会自动把小图片放置在背景 的正中央位置,-geometry默认是+0+0。
gravity不仅影响父元素的坐标系统,而且子元素的重心点(或者叫参照点)也随之改变。举例来说,当gravity值为southeast,父元素的坐标原点变为右下角了,x轴方向是从右到左,y轴方向从下到上;子元素重心点也是右下角,所以geometry设置的坐标点就是子元素的右下角相对父元素右下角的位置。gravity会影响通过geometry、annotate、region等来定义坐标点。
gravity可用值有九个,分别是:
NorthWest:左上角为坐标原点,x轴从左到右,y轴从上到下,也是默认值。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity northwest -geometry +10+10 -composite -size 100×50 xc:yellow -gravity northwest -geometry +110+60 -composite -gravity northwest -fill green -pointsize 24 -draw “text 110,60 ‘ www.pooy.net
‘” dome1.png
说明:创建一个灰色的400×120的背景,分别把两个100×50的小图片放置在背景上的(10,10)和(110,60)的位置,同时通过draw在图片输入一段文本,小图片和文本的参照点是左上角,效果如下图。
dome1
North:上部中间位置为坐标原点,x轴从左到右,y轴从上到下。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity north -geometry +10+10 -composite -size 100×50 xc:yellow -gravity north -geometry +110+60 -composite -fill green -pointsize 24 -gravity north -draw “text 0,60 ‘ www.pooy.net ‘” dome2.png
说明:小图片和文字的参照点是上部中间位置,效果如下图。
dome2
NorthEast:右上角位置为坐标原点,x轴从右到左,y轴从上到下。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity NorthEast -geometry +10+10 -composite -size 100×50 xc:yellow -gravity NorthEast -geometry +110+60 -composite -fill green -pointsize 24 -gravity NorthEast -draw “text 10,60 ‘ www.pooy.net
‘” dome3.png
说明:小图片和文字的参照点是右上角位置,效果如下图。
dome3
West:左边缘中间位置为坐标原点,x轴从左到右,y轴从上到下。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity West -geometry +10+10 -composite -size 100×50 xc:yellow -gravity West -geometry +110-40 -composite -fill green -pointsize 24 -gravity West -draw “text 0,0 ‘ www.pooy.net ‘” dome4.png
说明:小图片和文字的参照点是左边缘的中间位置,效果如下图。
dome4
Center:正中间位置为坐标原点,x轴从左到右,y轴从上到下。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity Center -geometry +50+25 -composite -size 100×50 xc:yellow -gravity Center -geometry -50-25 -composite -fill green -pointsize 24 -gravity Center -draw “text 0,0 ‘ www.pooy.net ‘” dome5.png
说明:小图片和文字的参照点是正中间的位置,效果如下图。
dome5
East:右边缘的中间位置为坐标原点,x轴从右到左,y轴从上到下。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity East -geometry +10+25 -composite -size 100×50 xc:yellow -gravity East -geometry +110-25 -composite -fill green -pointsize 24 -gravity East -draw “text 10,0 ‘ www.pooy.net ‘” dome6.png
说明:小图片和文字的参照点是右边缘中间的位置,效果如下图。
dome6
SouthWest:左下角为坐标原点,x轴从左到右,y轴从下到上。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity SouthWest -geometry +10+10 -composite -size 100×50 xc:yellow -gravity SouthWest -geometry +110+60 -composite -fill green -pointsize 24 -gravity SouthWest -draw “text 10,10 ‘ www.pooy.net
‘” dome7.png
说明:小图片和文字的参照点是左下角的位置,效果如下图。
dome7
South:下边缘的中间为坐标原点,x轴从左到右,y轴从下到上。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity South -geometry +10+10 -composite -size 100×50 xc:yellow -gravity South -geometry +110+60 -composite -fill green -pointsize 24 -gravity South -draw “text 0,0 ‘ www.pooy.net ‘” dome8.png
说明:小图片和文字的参照点是下边缘的中间,效果如下图。
dome8
SouthEast:右下角坐标原点,x轴从右到左,y轴从下到上。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity SouthEast -geometry +10+10 -composite -size 100×50 xc:yellow -gravity SouthEast -geometry +110+60 -composite -fill green -pointsize 24 -gravity SouthEast -draw “text 0,0 ‘ www.pooy.net
‘” dome9.png
说明:小图片和文字的参照点右下角,效果如下图。
dome9
资料来源于网上。
更多imagemagick资料请移步:http://www.pooy.net/category/os/imagemagick-os
----------------------------------------------------------------------------
ImageMagick官网
ImageMagick Identify 命令行工具(官网)
ImageMagick 程序接口文档
ImageMagick使用示例(非常好的示例)
GraphicsMagick资料
----------------------------------------------------------------------------
GraphicsMagick官网
GraphicsMagick编程接口
ImageMagick 程序接口
Im4java 下载地址
IM4JAVA+GraphicsMagick处理网站图片
命令行参数,说明文档
-------------------------------------------------------------
GraphicsMagick 命令行参数,说明文档
ImageMagick 命令行参数,说明文档
ImageMagick介绍
----------------------------------------------------------------------------
ImageMagick是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。其全部源码开放,可以自由使用,复制,修改,发布。它遵守GPL许可协议。它可以运行于大多数的操作系统。
最为重要的是,ImageMagick的大多数功能的使用都来源于命令行工具。
[b]GraphicsMagick介绍[/b]
----------------------------------------------------------------------------
GraphicsMagick是从 ImageMagick 5.5.2 分支出来的,但是现在他变得更稳定和优秀,GM更小更容易安装、GM更有效率、GM的手册非常丰富GraphicsMagick的命令与ImageMagick基本是一样的。
ImageMagick、[b][b]GraphicsMagick[/b]的命令概览[/b]
----------------------------------------------------------------------------
[ 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");
更多compiste 定位信息
在使用imagemagick的时候,使用gravity重新定义坐标后,可以很容易让子元素与父元素的对齐方式达到想要的效果,让一切变得非常简单。比如把一张小图片叠加到背景图片的
正中位置,按照默认的坐标系统,那必须要先知道背景图片和小图片的宽度以及高度,然后才能计算出起始点的坐标,再通过-geometry来设置坐标点。
如 果使用gravity,把其设置center,即把中心作为坐标的原点,那么根本不需要计算起始坐标点,ImageMagicK会自动把小图片放置在背景 的正中央位置,-geometry默认是+0+0。
gravity不仅影响父元素的坐标系统,而且子元素的重心点(或者叫参照点)也随之改变。举例来说,当gravity值为southeast,父元素的坐标原点变为右下角了,x轴方向是从右到左,y轴方向从下到上;子元素重心点也是右下角,所以geometry设置的坐标点就是子元素的右下角相对父元素右下角的位置。gravity会影响通过geometry、annotate、region等来定义坐标点。
gravity可用值有九个,分别是:
NorthWest:左上角为坐标原点,x轴从左到右,y轴从上到下,也是默认值。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity northwest -geometry +10+10 -composite -size 100×50 xc:yellow -gravity northwest -geometry +110+60 -composite -gravity northwest -fill green -pointsize 24 -draw “text 110,60 ‘ www.pooy.net
‘” dome1.png
说明:创建一个灰色的400×120的背景,分别把两个100×50的小图片放置在背景上的(10,10)和(110,60)的位置,同时通过draw在图片输入一段文本,小图片和文本的参照点是左上角,效果如下图。
dome1
North:上部中间位置为坐标原点,x轴从左到右,y轴从上到下。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity north -geometry +10+10 -composite -size 100×50 xc:yellow -gravity north -geometry +110+60 -composite -fill green -pointsize 24 -gravity north -draw “text 0,60 ‘ www.pooy.net ‘” dome2.png
说明:小图片和文字的参照点是上部中间位置,效果如下图。
dome2
NorthEast:右上角位置为坐标原点,x轴从右到左,y轴从上到下。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity NorthEast -geometry +10+10 -composite -size 100×50 xc:yellow -gravity NorthEast -geometry +110+60 -composite -fill green -pointsize 24 -gravity NorthEast -draw “text 10,60 ‘ www.pooy.net
‘” dome3.png
说明:小图片和文字的参照点是右上角位置,效果如下图。
dome3
West:左边缘中间位置为坐标原点,x轴从左到右,y轴从上到下。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity West -geometry +10+10 -composite -size 100×50 xc:yellow -gravity West -geometry +110-40 -composite -fill green -pointsize 24 -gravity West -draw “text 0,0 ‘ www.pooy.net ‘” dome4.png
说明:小图片和文字的参照点是左边缘的中间位置,效果如下图。
dome4
Center:正中间位置为坐标原点,x轴从左到右,y轴从上到下。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity Center -geometry +50+25 -composite -size 100×50 xc:yellow -gravity Center -geometry -50-25 -composite -fill green -pointsize 24 -gravity Center -draw “text 0,0 ‘ www.pooy.net ‘” dome5.png
说明:小图片和文字的参照点是正中间的位置,效果如下图。
dome5
East:右边缘的中间位置为坐标原点,x轴从右到左,y轴从上到下。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity East -geometry +10+25 -composite -size 100×50 xc:yellow -gravity East -geometry +110-25 -composite -fill green -pointsize 24 -gravity East -draw “text 10,0 ‘ www.pooy.net ‘” dome6.png
说明:小图片和文字的参照点是右边缘中间的位置,效果如下图。
dome6
SouthWest:左下角为坐标原点,x轴从左到右,y轴从下到上。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity SouthWest -geometry +10+10 -composite -size 100×50 xc:yellow -gravity SouthWest -geometry +110+60 -composite -fill green -pointsize 24 -gravity SouthWest -draw “text 10,10 ‘ www.pooy.net
‘” dome7.png
说明:小图片和文字的参照点是左下角的位置,效果如下图。
dome7
South:下边缘的中间为坐标原点,x轴从左到右,y轴从下到上。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity South -geometry +10+10 -composite -size 100×50 xc:yellow -gravity South -geometry +110+60 -composite -fill green -pointsize 24 -gravity South -draw “text 0,0 ‘ www.pooy.net ‘” dome8.png
说明:小图片和文字的参照点是下边缘的中间,效果如下图。
dome8
SouthEast:右下角坐标原点,x轴从右到左,y轴从下到上。
convert -size 400×120 xc:gray -size 100×50 xc:blue -gravity SouthEast -geometry +10+10 -composite -size 100×50 xc:yellow -gravity SouthEast -geometry +110+60 -composite -fill green -pointsize 24 -gravity SouthEast -draw “text 0,0 ‘ www.pooy.net
‘” dome9.png
说明:小图片和文字的参照点右下角,效果如下图。
dome9
资料来源于网上。
更多imagemagick资料请移步:http://www.pooy.net/category/os/imagemagick-os
相关文章推荐
- 计算机网络——计算机网络概述(1)
- 1.3 计算机网络体系结构 本章小结及疑难点
- 【转载】如何用子网掩码得到网络/主机地址
- 【Android】使用http的Post和Get方式获取网络数据
- JavaWeb核心编程之(三.5)HTTP请求和接受表单数据
- Linux iptables命令高级网络
- [BZOJ1189][HNOI2007]紧急疏散evacuate(二分+网络流)
- spark高级数据分析---网络流量异常检测(升级实战)
- php主机字节序和网络字节序
- TCP/IP协议讲解 <一>
- HTTP Status 500 - Servlet.init() for servlet springMVC threw exception
- fiddler Android下https抓包全攻略
- 神经网络和深度学习
- TCP建立连接的三次握手与断开连接的四次握手
- angular $http 与form表单的select-->refine
- TCP协议点对点(P2P)通讯(或者说NAT穿越)的实现方案
- TCP UDP及socket编程学习(二)
- 网络加载超大图如何避免程序崩溃
- 【IOS学习】 ios htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)
- 通过JPcap捕获网络TCP数据包,并将解析的信息写入execl文件中