用ImageMagick命令行处理图片.docx
- 文档编号:7483547
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:24
- 大小:326.99KB
用ImageMagick命令行处理图片.docx
《用ImageMagick命令行处理图片.docx》由会员分享,可在线阅读,更多相关《用ImageMagick命令行处理图片.docx(24页珍藏版)》请在冰豆网上搜索。
用ImageMagick命令行处理图片
用ImageMagick命令行处理图片
ImageMagick是强大的图像处理工具,他的强大之处在于Linux与生俱来的命令行特性,基于命令行的一系列工具可以让你完成、处理常见的图像操作,诸如生成缩略图,缩放,查看信息,加注标题,水印等等,功能上绝不亚于很多自诩出色GUI工具,学习使用ImageMagick是有益的,至少可以体会CLI的强大和简洁的行事风格。
这里列举一些使用ImageMagick的例子来说明如何在命令行界面下处理图像。
确信你的Linux装有ImageMagick的最快方法是
rpm-qiImageMagick
(如果你的系统不是基于RPM的,请执行
display或animate命令,确保你是在XWindows环境下)
生成缩略图和缩放!
ImageMagick的convert命令简直是万能的!
生成缩略图,
convert-sample100x20input.jpgoutput.jpg
上述命令生成一个100x20的缩略图
更好的方法是用等比例缩放,像这样,统一生成1/4的缩略图,
convert-sample25%x25%input.jpgoutput.jpg
如果写成脚本,就是像这个样子,
forimgin`ls*.jpg`
do
convert-sample25%x25%${img}thm${img}
done
这样可以对一个目录下的JPG文件一起生成缩略图了!
convert还可以直接用来生成图片,这个在一些特殊的时候有用,例如,可以用下面的命令生成法国国旗图案,
convert-size20x40xc:
redxc:
whitexc:
blue+appendflag.png
转化图像格式就更加方便,
convertinput.pngoutput.jpg
这就是Linux,简单直接!
!
还有旋转,
convert-rotate90input.jpgoutput.jpg
还有加注图片,
convert-fontfonts/font.ttf-strokecolor-fillcolor-pointsizesize
-draw'text10,10"String"'input.jpgoutput.jpg
-font指定字体,因为这样我加注文字,
-stroke描边用的颜色,
-fill填充用的颜色,这里用none就可以画出空心字了,
-pointsize加注字体大小,像素数,
-draw是用来画,这里是文字,下面的位置10,10是以图片左上角为原点坐标的。
convert还可以做出很多其他的艺术效果,这里不再详述,可以参见相关手册。
用convert给图片加边框
convert-raise5x5input.jpgoutput.jpg
convert+raise5x5input.jpgoutput.jpg
以上命令分别用-,+边缘颜色的来达到处理边缘的效果!
convert-bordercolorred-border5x5input.jpgoutput.jpg
简单的加上5个像素宽的红边!
其他的边框会比这个复杂,包括参数mattecolor的使用等等,参见相关手册。
composite来组合图片,
例如,
composite–gravitySouthEasttoplogo.pngimage.pngimage_logo.jpg
图片底部是South,右边是East。
ImageMagick包括一组命令行工具来操作图片。
你大部份习惯每次编辑图片都提供图形用户接口(GUI)编辑图像就像GIMP和PhotoShop一样。
然而,一个图形用户接口不总是方便的。
假如你想要从一个网页动态地处理一个图像,或者你在不同时间生成一样的或不同的图像,想要对许多图像或重复特定应用相同的操作。
对于操作的这些类型,处理公用程序命令行工具是一个好的选择。
在下面的段落中,可以找到命令行工具的简单短描述。
点击程序名称可以得到关于这个程序的具体用法。
如果你想得到更多的关于ImageMagick,请仔细阅读以下命令行工具的使用方法:
convert
转换图像格式和大小,模糊,裁剪,驱除污点,抖动,临近,图片上画图片,加入新图片,生成缩略图等。
identify
描述一个或较多图像文件的格式和特性。
mogrify
按规定尺寸制作一个图像,模糊,裁剪,抖动等。
Mogrify改写最初的图像文件然后写到一个不同的图像文件。
composite
根据一个图片或多个图片组合生成图片。
montage
创建一些分开的要素图像。
在含有要素图像任意的装饰图片,如边框、结构、图片名称等。
compare
在算术上和视觉上评估不同的图片及其它的改造图片。
display
如果你拥有一个Xserver的系统,它可以按次序的显示图片
animate
利用Xserver显示动画图片
import
在Xserver或任何可见的窗口上输出图片文件。
你可以捕获单一窗口,整个的荧屏或任何荧屏的矩形部分。
conjure
解释执行MSL(MagickScriptingLanguage)写的脚本。
ImageMagick是一个强大的命令行图像处理软件,配合dos命令,就可以批量对大量图片进行处理了。
可以去官方网站http:
//www.imagemagick.org下载最新版本的ImageMagick,安装后就可以在dos窗口中采用convert命令对图片进行转换了,命令格式如下:
convert<输入图片名>[+/-命令和命令的参数]*<输出图片名>
其中命令的执行是有顺序的,按照从左至右的顺序依次执行,比如:
convert1.jpg-crop300x300+0+0-resize200x200-colors100+profile"*"1.png
表示:
把1.jpg先从左上角(0,0)裁剪一块300x300的部分,然后把这部分缩小到200x200,然后把颜色缩减到100色,最后生成1.png。
"+profile"*""意味着在图片文件里不存储附加信息,以减小图片体积。
注意,-resize会试图保留原图的视觉比例,因此不一定生成的图片和你指定的尺寸一定匹配,比如,如果2.jpg大小是400x200,那么如果用下面的命令:
convert2.jpg-resize100x1002.png
那么生成的图片2.png的实际大小是100x50。
常用的命令有:
-crop宽x高+起点横坐标+起点纵坐标:
裁剪图
-resize宽x高[!
]:
改变尺寸,如果使用惊叹号,表示不保留视觉比例,强行改变尺寸匹配给定的宽和高
-colors颜色数:
设定图片采用的颜色数,如果是生成png或gif图片应指定这个参数
-quality质量:
设定jpeg图片输出质量,推荐采用80,此命令仅用于输出格式是jpg的情况,不应省略,省略的话默认质量是95,生成图片过大
+profile"*":
图片中不存储附加信息,必须使用,否则生成图片过大
配合dos命令就可以进行批量处理了,可以采用批处理文件或者使用for循环,对于简单的操作,推荐采用for循环,使用方法举例:
for%Iin(*.jpg)doconvert%I-resize200x200-colors20+profile"*"%~nI.png
把当前目录下所有jpg文件改变大小到200x200,并降低颜色到20色,生成对应的png文件,for命令的详细解释请使用for/?
查看。
ImageMagicK是一个强大的图象处理工具包。
它提供了几个非常方便的命令行命令:
display,animate,import,montage,mogrify,identify等,可以进行图象的显示,缩放,旋转,调色,加框,加注释等,还能制作GIF动画,图象索引,能自动生成图象.
制作索引图和动画
!
/bin/bash
montage-bordercolorred-borderwidth3-label"%f"-tile5x3*.JPGmontage.jpg
mogrify-formatgif*.JPG
displaymontage.jpg
animate*.JPG
缩放convert-sample80x40input.jpgoutput.jpg#注意:
缩放后图像保持原来的长宽比例convert-sample25%x25%input.jpgoutput.jpg
为当前目录的所有图像生成缩略图
forimgin`ls*.jpg`
do
convert-sample25%x25%$imgthumb-$img
done
获取文件信息libtiff
tiffinfofilename.tiff
pnginfofilename.png
可以使用ImageMagick的identify
identify-verbosesample.png
identify-format"%wx%h"sample.png
旋转图像
convert-rotate90input.jpgoutput.jpg
更改文件类型
convertinput.jpgoutput.png
为图像增加注释文字
convert-fonthelvetica-fillwhite-pointsize36\
-draw'text10,50"Floriade2002,Canberra,Australia"'\
floriade.jpgcomment.jpg
convert-fontfonts/1900805.ttf-fillwhite-pointsize36\
-draw'text10,475""'\
floriade.jpgstillhq.jpg
特殊效果
convert-charcoal2input.jpgoutput.jpg#炭笔
convert-colorize255input.jpgoutput.jpg#着色可以指定三种颜色red/green/blue
convert-implode4input.jpgoutput.jpg #内爆效果
convert-solarize42input.jpgoutput.jpg#曝光,模拟胶片曝光
convert-spread5input.jpgoutput.jpg #随机移动,参数是位移大小
一次执行多个操作
convert-sample25%x25%-spread4 -charcoal4input.jpgoutput.jpg
topImageMagickFAQ摘要
如何让animate在显示图片的过程保持窗口的标题不变
animate-title"MyImageSequence"images.
import抓得的图片与X服务器上显示的不一致怎么办?
import-descendimage.miff
如何动画显示YUV图片序列?
animate-geometry352x240-scene0-71yuv3:
frame%d
如果只看一个RGB图片的红色通道(redchannel)?
display-gamma1.0,0.0,0.0image.miff
如何改变PostScript默认纸张大小?
要改变默认的612x792大小,修改magick/image.h中的PSPageGeometry的值并重编译.
如何自左至右无边无框无文字半三幅画连接在一起?
convert+appendimage1.ppmimage2.ppmimage3.ppmside_by_side.miff
#或
convert-size350x500xc:
blackcomposite.miff
composite-geometry+0+0composite.miffimage1.gifcomposite.miff
composite-geometry+100+0composite.miffimage2.gifcomposite.miff
composite-geometry+0+300composite.miffimage3.gifcomposite.miff
composite-geometry+0+375composite.miffimage4.gifcomposite.miff
如何生成gif动画?
convert-delay20frame*.gifanimation.gif
convert-delay20frame1.gif-delay10frame2.gif-delay5frame3.gifanimation.gif
convertframe1.gif-page+50+100frame2.gif-page+0+100frame3.gifanimation.gif
convert-loop50frame*.gifanimation.gif
convert+adjoinimages.*frames%d.gif
如果完整的显示PostScript图片?
display-pageletterimage.ps
什么是图片目录?
如何使用它们?
#图片目录(visualimagedirectory,VID)的创建:
montage*.jpgdirectory.vid
convert'vid:
*.jpg'directory.vid
#显示图片目录
displaydirectory.vid
displayvid:
movie.mpg
如果带框架保存一个窗口?
xwininfo-frame
import-frame-windowIDwindow.miff
图片以单一颜色(asolidcolor)显示,是怎么回事?
图片被破坏,或含有值为0的matte层,试着:
display+matteimage.miff
出现"?
?
?
?
libraryisnotavailable..."是怎么回事?
没安装相关的函数库。
参见安装说明。
如何查看图片不光滑层(mattechannel)的值?
convertimage.tiffimage.matte
display-size640x480gray:
image.matte
运行"Convertin.gifout.png"时显示"InvalidParameter-out.你运行的convert是windows的分区类型转换程序。
如何在图片增加斜角?
#对图片边缘的处理共分四类。
1)增加有色边
convert-bordercolorred-border25x25image.jpgimage.gif
2)加亮或变暗图片边缘,以增强3D效果
convert-raise25image.jpgimage.gif
3)在图片周围增加装饰性框架。
convert-mattecolorgray-frame25x25image.jpgimage.gif
4)在图片边缘增加升、降斜角
convert-mattecolorgray-frame25x25+0+25image.jpgimage.gif
convert-mattecolorgray-frame25x25+25+0image.jpgimage.gif
用窗口管理器运行display失败了,怎么办?
用下列命令之一来确认display运行在一个交互环境中:
displaylogo:
Untitled
display
将PostScript文件转换为其它格式时,如何改善文字的外观?
convert-density288-geometry25%image.psimage.gif
如何用2-3英寸高的文字注释一个图片?
先检查有无可缩放字体:
xlsfonts-fn'*-0-0-0-0-*' 有则:
convert-font'-*-helvetica-*-*-*--300-300-*-*-*-*-iso8859-1'\
-fillgreen-draw'text50,300Magick'image.gifannotated.gif
#IfyouhavetheFreeTypesupportbuiltintoImageMagick,
#justincreaseyourpointsizeand/ordensity:
convert-fontHelvetica-pointsize100-density300...
如何将gif文件分析为一系列的单个图片?
convertanimation.gifframe%02d.gif
用NetScape显示的图片,如何去掉周围的背景色?
convert+pagealpha.gifbeta.gif
如何用web安全的颜色(Websafecolors)创建GIF或PNG图片?
convert-mapnetscape:
alpha.gifbeta.gif
为何AdobeAcrobat2.1不能读ImageMagick's制作的PDF?
用Acrobat3.0或以上版本,来阅读这种经zip压缩的pdf,或制作PDF时不进行压缩。
convert+compressimages.tiffimage.pdf
如何在图片上增加一个不光滑层(mattechannel)?
convertimage.gif-mattetemp.miff
composite-composeCopyOpacitymask.xbmtemp.mifftransparent.gif
在NT环境下如何用convert在图片上写字?
convert-fontArial-fillblue-draw"text10,10'yourtexthere'"d:
\test.tifpng:
d:
\test.png
convert.exe-pointsize18-draw"text0,0"Thisismytext!
""C:
\blank.gifc:
\text.gif
为何GIF文件比期望的大?
需要在编译源码时加--enable-lzw参数,来打开LZW压缩功能。
为何JPEG文件比期望的大?
可能嵌入Exif或IPTC等"profiles",或者含有没压缩的thumbnails.可以用命令行参数+profile""或相关的API来将它们去掉。
如何从图片文件中抽取第一张图片?
convert"Image.gif[0]"first.gif
如何创建一张空白图片?
convert-size800x600xc:
"#ddddff"ltblue.ppm
convert-size800x600null:
whitewhite.ppm
convertin.png-threshold100%black.ppm #<--与in.png同大小
为何GIF文件比期望的大?
需要在编译源码时加--enable-lzw参数,来打开LZW压缩功能。
为何JPEG文件比期望的大?
可能嵌入Exif或IPTC等"profiles",或者含有没压缩的thumbnails.可以用命令行参数+profile""或相关的API来将它们去掉。
top使用笔记
把matlab中画出的多幅图作成GIF动画
foriin`ls*.jpg`;doconvert-trim-resize350x305$icrop.$i;done
convert-delay10-loop3crop.frame*.jpgstring.gif
rmcrop.frame*.jpg
生成png格式的email地址
convert-size185x19null:
whiteemail.png
convert-fontmonospace-fillblack-pointsize16 -draw'text4,14"youremail@yourdomain"'email.pngemail.png
convert-fontmonospace-fillblue-pointsize16 -draw'text3,13"youremail@yourdomain"'email.pngemail.png
没有什么能象命令行工具这样适合于处理大批量的任务,对于图像操作也不例外。
Web开发人员和管理员会喜欢轻松处理大量文件的能力,无论是使用命令行还是脚本。
程序员MichaelStill介绍了ImageMagick套件,这是一个用于以多种格式对图像进行缩放大小、旋转、转换和其它操作的Linux工具箱,无论图像的数量是一个还是上百个,它都可以一次处理掉。
本文展示了如何使用命令行工具执行图像操作。
这种任务对我而言相当常见,因为我拥有几部数码相机,并且现在管理着一个拥有几千张精彩照片的资料库。
对于经常需要对大量图像进行批处理的Web开发人员和管理员而言,命令行工具是特别具有吸引力的选择,因为开发人员可以将它们合并成脚本。
但即使您只想执行一两次操作,选择命令行也可以节省时间。
本文中讨论的命令行工具是优秀的ImageMagick套件的一部分,该套件是随RedHatLinux一起提供的,并可免费在线下载(请参阅参考资料)。
也可以通过C、C++、Perl、Python、Java和其它几种语言使用ImageMagick,Linux程序员会喜欢这样做。
请注意,有许多种方法可以完成本文中所讨论的任务。
我讨论了我所使用的方法,它对我确实很有效。
这并不意味着除此之外的其它工具就很差劲;仅仅表示我对于现在所使用的工具很满意。
本文采用了以具体问题作为示例进行讨论这种形式,但其思想应该也适用于其它问题领域。
生成缩略图
我对照片集所执行的第一个操作是生成缩略图。
我还想减少图像的大小,以适用于网站版本因为许多人实际上并不想看到我儿子的1920x1440像素的照片。
ImageMagick是如何工作的
ImageMagick是作为包含了一大堆不同的图像处理库的包装器实现的,这些图像处理库包括libtiff和libpng(请参阅参考资料以获取我先前所著的关于libtiff文章的链接)。
在ImageMagick术语中,这些库称为代表(delegate)。
这是ImageMagick不如定制应用程序执行得那么快的原因之一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ImageMagick 命令行 处理 图片