小试ImageMagik——使用篇
=====================================================
ImageMagick的使用和开发的文章:
=====================================================
前两天帮同学调了一个小程序,是有关ImageMagik的。ImageMagik之前早有耳闻,据说处理图片的功能很强大,几乎都能把PhotoShop给替代了,但是一直没有机会尝试。于是顺便尝试了一下,记录一下它的使用方法和开发方法。
首先记录一下它的简介,是从百度百科上看到的:
ImageMagick是一套功能强大、稳定而且开源的工具集和开发包,可以用来读、写和处理超过89种基本格式的图片文件,包括流行的TIFF、JPEG、GIF、PNG等格式。利用ImageMagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。
主页:http://www.imagemagick.org/
安装
我自己的系统是Windows的,因此从网站上下载安装包之后,一路“Next”就可以安装完毕。需要注意的地方是,如果想要使用ImageMagick进行开发,需要在安装的过程中勾选“Install development headers and libraries for C and C++”
安装完成后,目录如下图所示:
介绍其中几个重要的文件:
Lib文件夹:开发需要使用的静态库文件。包含4个库(前3个分别对应3种接口):
CORE_RL_magick_.lib; CORE_RL_Magick++_.lib;CORE_RL_wand_.lib; X11.lib;
Include文件夹:开发需要使用的头文件。包含3个文件夹(分别对应3种接口):
magick; Magick++; wand;
*.dll:开发和使用过程中需要使用的动态链接库文件。
*.exe:各种工具,以命令行工具为主。只有一个工具是图形界面的——imdisplay.exe,是个图片浏览器。
使用
在这里简单介绍一下自己使用过的几个程序。
convert.exe
转换图像格式和大小,模糊,裁剪,驱除污点,图片上画图片,加入新图片,生成缩略图等。
identify.exe
描述一个或多个图像文件的格式和特性。
mogrify.exe
按规定尺寸制作一个图像,模糊,裁剪等。改写最初的图像文件然后写成一个不同的图像文件。
composite.exe
根据多个图片组合生成图片。
montage.exe
创建一些分开的缩略图像。可以给这些缩略图像添加修饰,比如边框、图片名称等。
compare.exe
在算术上和视觉上评估原始图片和处理后的图片。
convert.exe使用示例
转换JPEG格式图像到PNG格式图像
convert rose.jpg rose.png
转换JPEG格式图像到PNG格式图像,并缩小至原图片的50%
convert rose.jpg -resize 50% rose.png
可以使用很复杂的命令,例如
convert -size 320x85 canvas:none-font Bookman-DemiItalic -pointsize 72 \ -draw "text 25,60 'Magick'"-channel RGBA -blur 0x6 -fill darkred -stroke magenta \ -draw "text 20,55 'Magick'"fuzzy-magick.png
identify.exe使用示例
查看文件格式(简单)
identify rose.jpg
输出:
rose.jpg JPEG 640x480 sRGB 87kb0.050u 0:01
查看文件格式(详细)
identify -verbose rose.jpg
输出:
Image: rose.jpg Format: JPEG (Joint PhotographicExperts Group JFIF format) Class: DirectClass Geometry: 70x46+0+0 Resolution: 72x72 Print size: 0.972222x0.638889 Units: PixelsPerInch Type: TrueColor Endianess: Undefined Colorspace: RGB Depth: 8-bit Channel depth: red: 8-bit green: 8-bit blue: 8-bit Channel statistics: red: min: 37 (0.145098) max: 255 (1) mean: 145.58 (0.5709) standard deviation: 67.3195(0.263998) green: min: 31 (0.121569) max: 255 (1) mean: 89.2512 (0.350005) standard deviation: 52.0488(0.204113) blue: min: 17 (0.0666667) max: 255 (1) mean: 80.4075 (0.315323) standard deviation: 54.0052(0.211785) Rendering intent: Undefined Interlace: None Background color: white Border color: rgb(223,223,223) Matte color: grey74 Transparent color: black Page geometry: 70x46+0+0 Dispose: Undefined Iterations: 0 Compression: JPEG Quality: 100 Orientation: Undefined Properties: date:create:2008-01-08T11:08:52-05:00 date:modify:2005-04-07T12:48:13-04:00 jpeg:colorspace: 2 jpeg:sampling-factor: 2x2,1x1,1x1 signature: dcd00d6303f80f4fa53f991804cb026151c1e851b7a96255e82da87299583ebc Artifacts: verbose: true Tainted: False Filesize: 3.97266kb Number pixels: 3.14453kb Version: ImageMagick 6.8.9-12014-04-11 Q16 http://www.imagemagick.org
mogrify.exe
调整图像的尺寸至原来的50%
mogrify -resize 50% rose.jpg
将文件夹下所有JPEG的最大尺寸调整为256x256
mogrify -resize 256x256 *.jpg
composite.exe
将smile.gif叠加到rose-over.png上
composite -gravity center smile.gifrose: rose-over.png
montage.exe
将两张图片简单合成为一张图片
montage -background #336699 -geometry+4+4 rose.jpg red-ball.png montage.jpg
在每张图像周围加一些装饰
montage -label %f -frame 5-background #336699 -geometry +4+4 rose.jpg red-ball.png frame.jpg
compare.exe
比较两张图片的不同
compare rose.jpg reconstruct.jpgdifference.png
查看两张图片中红色通道的PSNR
compare -channel red -metric PSNRrose.jpg reconstruct.jpg difference.png
查看两张图片的PSNR
compare -metric PSNR rose.jpgreconstruct.jpg difference.png
小试ImageMagik——使用篇的更多相关文章
- 小试ImageMagik——开发篇
===================================================== ImageMagick的使用和开发的文章: 小试ImageMagik--使用篇 小试Imag ...
- TGL站长关于常见问题的回复
问题地址: http://www.thegrouplet.com/thread-112923-1-1.html 问题: 网站配有太多的模板是否影响网站加载速度 月光答复: wp不需要删除其他的模板,不 ...
- 小试ASP.NET MVC——一个邀请页面的实现
上篇博客我们大体介绍了ASP.NET MVC以及如何去新建项目,这篇博客我们讲点干货.小试ASP.NET MVC,我们来写一个简单的邀请WEB. 先来建立一个Models,叫GuestResponse ...
- opencv 61篇
(一)--安装配置.第一个程序 标签: imagebuildincludeinputpathcmd 2011-10-21 16:16 41132人阅读 评论(50) 收藏 举报 分类: OpenCV ...
- windows phone (12) 小试自定义样式
原文:windows phone (12) 小试自定义样式 样式在BS开发中经常用到,在wp中系统也提供了解决办法,就是对设置的样式的一种资源共享,首先是共享资源的位置,它是在App类中,之前我们已经 ...
- 用js来实现那些数据结构(数组篇02)
上一篇文章简单的介绍了一下js的类型,以及数组的增删方法.这一篇文章,我们一起来看看数组还有哪些用法,以及在实际工作中我们可以用这些方法来做些什么.由于其中有部分内容并不常用,所以我尽量缩小篇幅.在这 ...
- OpenCV特征点检测------Surf(特征点篇)
Surf(Speed Up Robust Feature) Surf算法的原理 ...
- 用js来实现那些数据结构02(数组篇02-数组方法)
上一篇文章简单的介绍了一下js的类型,以及数组的增删方法.这一篇文章,我们一起来看看数组还有哪些用法,以及在实际工作中我们可以用这些方法来做些什么.由于其中有部分内容并不常用,所以我尽量缩小篇幅.在这 ...
- js(数组篇02)
原文:http://www.cnblogs.com/zaking/p/8686676.html 上一篇文章简单的介绍了一下js的类型,以及数组的增删方法.这一篇文章,我们一起来看看数组还有哪些用法,以 ...
随机推荐
- python学习之路前端-Dom
Dom简介 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为 ...
- PHP 包含
PHP 包含文件 PHP include 和 require 语句 在 PHP 中,您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容. include 和 require 语句用于在执 ...
- lglob-lua 静态检查脚本
./lglob ~/ngx/lualib/mvc/*.lua 2>&1 | grep ' set '
- ThreadLocal(线程绑定)
为保证在DAO层里的操作都在同一事务里,我们曾使用以参数的形式将Connection向下传递的方式,而ThreadLocal来创建Connection连接,避免了一直以参数的形式将Connection ...
- linux系统性能监控--内存利用率
Linux提供了对物理内存进行合理.高效的访问并可以访问潜在的海量虚存的技术.虚存通常稍多于操作系统实际拥有的内存容量,以便将较少使用的数据卸载到磁盘存储器上,同时又呈现出系统拥有大量物理内存的假象. ...
- [文摘]Quick Start to Client side COM and Python
摘自:PyWin32.chm Introduction This documents how to quickly start using COM from Python. It is not a t ...
- JVM垃圾回收总结
来自Oracle官方文档,对JVM GC知识整理的清晰易懂,查资料还是看官方的好! 1 GC步骤简述 步骤1:标记 (Marking) 根据对象引用关系,将未被任何对象引用的对象实例标记出来,如下图中 ...
- [线程]Thead 中传参数RuntimeError: thread.__init__() not called
在写一个多线程类的时候调用报错 RuntimeError: thread.__init__() not called class NotifyTread(threading.Thread): def ...
- SQLite Update 语句(http://www.w3cschool.cc/sqlite/sqlite-update.html)
SQLite Update 语句 SQLite 的 UPDATE 查询用于修改表中已有的记录.可以使用带有 WHERE 子句的 UPDATE 查询来更新选定行,否则所有的行都会被更新. 语法 带有 W ...
- javascript之内置函数
1.常规函数 (1)alert函数:显示一个警告对话框,包括一个OK按钮. (2)confirm函数:显示一个确认对话框,包括OK.Cancel按钮. (3)escape函数:将字符转换成Unicod ...