用ImageMgick命令行处理图片.docx

上传人:b****8 文档编号:30477024 上传时间:2023-08-15 格式:DOCX 页数:29 大小:326.60KB
下载 相关 举报
用ImageMgick命令行处理图片.docx_第1页
第1页 / 共29页
用ImageMgick命令行处理图片.docx_第2页
第2页 / 共29页
用ImageMgick命令行处理图片.docx_第3页
第3页 / 共29页
用ImageMgick命令行处理图片.docx_第4页
第4页 / 共29页
用ImageMgick命令行处理图片.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

用ImageMgick命令行处理图片.docx

《用ImageMgick命令行处理图片.docx》由会员分享,可在线阅读,更多相关《用ImageMgick命令行处理图片.docx(29页珍藏版)》请在冰豆网上搜索。

用ImageMgick命令行处理图片.docx

用ImageMgick命令行处理图片

用ImageMgick命令行处理图片

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

用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是作为包含了一大堆不同的图像处理库的包装器实现的,这些图像处理库包括l

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1