图片处理服务 ImageMagick 的安装和使用
简介
该文章使用目前官方最新版本7.0.8,这里只记录下Windows系统下的安装。
官方网站:http://www.imagemagick.org/script/index.php。
ImageMagick是一套功能强大、稳定而且开源的工具集和开发包,可以用来读、写和处理超过200种基本格式的图片文件,包括PNG,JPEG,GIF,HEIC,TIFF,DPX,EXR,WebP,Postscript,PDF和SVG等格式。利用ImageMagick,可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存,对图片的操作,既可以通过命令行进行,也可以通过C/C++、Perl、Java、PHP、Python或Ruby编程来完成。ImageMagic的主要精力集中在性能,减少bug以及提供稳定的API和ABI上。
ImageMagick的功能通常通过命令行使用,也可以通过编程来使用。编程可以选择通过这些接口调用:G2F (Ada),MagickCore (C),MagickWand (C),ChMagick (Ch),ImageMagickObject (COM+),Magick++ (C++),JMagick (Java),JuliaIO (Julia),L-Magick (Lisp),Lua (LuaJIT),NMagick (Neko/haXe),Magick.NET (.NET),PascalMagick (Pascal),PerlMagick (Perl),MagickWand for PHP (PHP),IMagick (PHP),PythonMagick (Python),magick (R),RMagick (Ruby),or TclMagick (Tcl/TK)。
下载
进入到Download页面,往下翻,找到Windows版本文件的下载页
会看到如下的下载列表(经过整理翻译):
关于下载文件选择:
内存大小是一个重要因素,特别是如果打算处理大型图像。建议至少使用512MB的RAM,但RAM越大越好。ImageMagick不仅在单核计算机上运行良好,也可以在多核系统上自动并行运行,从而大大缩短了运行时间。
Windows版本的ImageMagick是自行安装的。只需单击下面的相应版本,它就会自动启动并向您询问一些安装问题。
文件名称中有Q8的版本是每像素8位分量(例如,8位红色,8位绿色等),而文件名中的Q16是每像素16位分量。Q16版本允许您读取或写入16位图像而不会丢失精度,但需要两倍于Q8版本的计算机资源。
文件名中带有dll的版本包括ImageMagick库作为动态链接库。
除非你的电脑是Windows32位操作系统,否则建议使用64位的Windows ImageMagick。
关于Q8,Q16的说明:
Q8表示: 8-bits per pixel quantum
Q16表示:16-bits per pixel quantum
使用16-bit在处理图片时比8-bit慢15%至50%,并须要更多的内存。比如处理一张1024x768像素的图片8-bit要使用3.6M内存,16-bit要使用7.2M内存。
计算方法是: (5 * Quantum Depth * Rows * Columns) / 8
8-bit可表示0-255种值,16-bit可表示0-65535种值。默认值是8-bit。大多数电脑显示使用8-bit per pixel quantums。现代数码相机照的相片,每一种颜色就是8位深,3种颜色就是24位,选Q8的话也可以满足使用要求,同时可节省计算机资源。
这里我们选择下载官方推荐的文件,也就是第一个:ImageMagick-7.0.8-12-Q16-x64-dll.exe
下载到桌面上的文件:
安装
选择好安装目录后,一直点Next就行,安装完图标。这个7.0版本的安装选项和之前的6点几版本有些不同,系统环境变量都是自动配置好的。
使用
图形程序使用
图形程序中涉及到的图片操作菜单主要是View和Transform,下面简单介绍翻译下这两个菜单。
Half Size 一半大小
Original Size 原始尺寸
Double Size 双倍尺寸
Resize... 自定义尺寸
Toolbar 工具栏
Status Bar 状态栏
Crop 裁切,保留所选部分Rol
Chop 裁切,去掉所选部分,然后把剩余的图片进行拼接
Filp 上下翻转
Flop 左右翻转
Rotate Right 向右旋转90度
Rotate Left 向左旋转90度
Rotate... 旋转指定度数
Shear... 设置X轴角度和Y轴角度
Roll... 设置水平像素和垂直像素
Trim Edges 修剪边缘
命令行使用
上面说过,IM的大部分功能都是基于命令行使用的,所以最全的使用方式应该是命令行方式。
各个命令的详细说明可以直接参考这个地址:https://www.w3cschool.cn/imagemagick_use/
参考官方说明:
IM命令行结构剖析:
ImageMagick命令行包含
1、一个或多个必需输入的文件名。
2、零个,一个或多个图像设置。
3、零个,一个或多个图像运算符。
4、零个,一个或多个图像序列运算符。
5、零个,一个或多个图像堆栈。
6、零个或一个输出图像文件名。(convert,composite,montage,compare,import,conjure,这些命令需要)
注意:直接写convert,如果命令行如果提示找不到convert命令的话,把目录下的magick.exe拷贝一份命名convert.exe,这样就可以直接使用convert了,不用写magick了
IM命令行的简单使用:
打开CMD命令行窗口,进入图片所在目录(我的测试图片在桌面的test文件夹里)
- C:\Users\Administrator>cd C:\Users\Administrator\Desktop\test
- C:\Users\Administrator\Desktop\test>magick test.jpg test1.png
magick test.jpg test1.png 表示把test.jpg这个图片另存一份为test1.png,同时修改了图片名称和格式。
- magick label.gif +matte \
- \( +clone -shade 110x90 -normalize -negate +clone -compose Plus -composite \) \
- \( -clone 0 -shade 110x50 -normalize -channel BG -fx 0 +channel -matte \) \
- -delete 0 +swap -compose Multiply -composite button.gif");
上面的命令是在Linux下的写法,命令足够长,必须跨多行写入,Linux使用的是\,Windows使用的是^,另外Windows下的命令行中对于括号不需要转义,则命令格式如下:
- magick label.gif +matte ^
- ( +clone -shade 110x90 -normalize -negate +clone -compose Plus -composite ) ^
- ( -clone 0 -shade 110x50 -normalize -channel BG -fx 0 +channel -matte ) ^
- -delete 0 +swap -compose Multiply -composite button.gif
上面的命令对图片纹理进行了丰富和色彩进行了加深。
- magick *.jpg images.gif
将当前目录下所有jpg图片合成一个gif动画,我合成了个静态图片
- magick -size 640x480 -depth 8 rgb:image image.png
后面还有好多的命令,详细信息请参考官方网站说明。
程序接口使用
这里只说一下Java相关的工具。Java可调用接口有两种,JMagick和Im4java。JMagick为ImageMagick提供了面向对象的Java接口。Im4java是ImageMagick命令行的纯java接口。
1、JMagick
JMagick是一个开源API,利用JNI(Java Native Interface)技术实现了对ImageMagick API的Java访问接口,因此也将比纯Java实现的图片操作函数在速度上要快。JMagick只实现了ImageMagic API的一部分功能,它的发行遵循LGPL协议。
目前JMagick只有32位的,所以只能选择32位的ImageMagick,并且版本支持很低,目前只支持到ImageMagick-6.3.9-0,只能使用32位的JDK,64位进程不能够调用32位的dll,想在64位的系统上用jmagick不仅要将jdk换成32位,而且jmagick.dll也得放到SysWOW64下面,不能放到System32中。
具体使用可参考我的另一篇博客:JMagic 操作 ImageMagick 处理图片
2、Im4java
Im4java是ImageMagick的另一个Java开源接口。与JMagick不同之处在于Im4java只是生成与ImageMagick相对应的命令行,然后将生成的命令行传至选中的IM-command(使用java.lang.ProcessBuilder.start()实现)来执行相应的操作。它支持大部分ImageMagick命令,可以针对不同组的图片多次复用同一个命令行。
Im4java只是封装ImageMagick的命令。所以不需要依赖dll,也不存在64位系统调用32位dll的问题,而且Im4java支持GraphicsMagick,GraphicsMagick是ImageMagick的分支。且Flickr和Etsy都要使用它。相对ImageMagick,GraphicsMagick更稳定,消耗资源更少。最重要的是不依赖dll环境。
具体使用可参考我的另一篇博客:Im4java 操作 ImageMagick 处理图片
图片处理服务 ImageMagick 的安装和使用的更多相关文章
- 图片处理GraphicsMagick & ImageMagick
用Java的ImageIO处理一个大于15M的JPG文件,内存溢出. 于是寻求新的解决方案,用ImageMagicK,发现处理图片速度不令人满意,于是切换至GraphicsMagicK,如下是总结. ...
- 转:ImageMagick +Jmagick安装
原文来自于: 目录 一.ImageMagick介绍 二.安装支持库 三.在Linux上用源码编译安装ImageMagick与Jmagick 四.在Linux上使用yum安装ImageMagick与Jm ...
- 在腾讯云上把Laravel整合万向优图图片管理能力,打造高效图片处理服务
推荐理由: 现如今数据爆炸性增长,人类生活产出的数据越来越多,文字信息,图片信息,视频信息:但有很多信息我们都无法直接使用,需通过一定的处理,才能够获取其中对我们有用的信息,在腾讯云上的万向优图能够对 ...
- 【腾讯云的1001种玩法】 Laravel 整合万向优图图片管理能力,打造高效图片处理服务
版权声明:本文由白宦成原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/574549001488234358 来源:腾云阁 h ...
- LAMP架构应用实战—Apache服务介绍与安装01
LAMP架构应用实战—Apache服务介绍与安装01 一:Apache是什么 Apache是Apache基金会开发的一个高性能.功能强大.安全可靠.灵活的开放源码的WEB服务软件 二:Apache ...
- redis服务和扩展安装(windows)
Windows下安装redis和在php中使用phpredis扩展 原文地址:http://m.oschina.net/blog/281058 Junn 发布于 2年前,共有 0 条评论 1.redi ...
- ORACLE服务端详细安装步骤(配图解)
ORACLE服务端的安装及配置 l 将下载的安装包解压缩,双击[setup.exe]文件,系统检查监听参数,耐心等待,完成后出现如下界面,电子邮件可不填,"我希望..."建议不勾选 ...
- DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置
DNS服务器:主要介绍DNS的服务原理以及安装及其主从配置 一.DNS简介 1.DNS DNS是域名系统(Domain Name System)的简称,它是一个将域名和IP相互映射的分布式数据库 ...
- Windows服务创建及安装
Windows服务创建及安装http://www.cnblogs.com/tuyile006/archive/2006/11/27/573654.html
随机推荐
- Quartz.Net进阶之五:TriggerListener 、JobListener 和 SchedulerListener
一.介绍 今天开始学习监听器,就是 Listener,在Quartz.Net 中,主要包含3类的监听器,主要内容包括:TriggerListener .JobListener 和 SchedulerL ...
- 阿里云服务器配置phpstudy实现域名访问【图文教程】
首先,运行phpStudy,确保Apache和MySql启动,绿色代表正常启动状态. 然后配置站点域名,打开phpStudy的站点域名管理,1.设置域名(你有的域名,最后需要域名解析):2.设置文件的 ...
- docker-3 Apache
docker 安装 Apache 环境 docker pull httpd 文件创建连接(这样就可以不用发布了,两个文件夹会自动同步文件) ln -s /root/jenkins_home/works ...
- linux 图形化界面 && 谷歌浏览器 安装
一.图形化界面安装 yum groupinstall "Desktop" 如果运行显示 则 yum groupinstall "X Window System" ...
- 使用fiddler模拟session失效的测试方法
1.Fiddler的基本界面 2.json串放入本地txt文件中 例如, test.txt: {"retCode": "200","Msg" ...
- vue使用中遇到的,以及vue1.0到vue2.0新手踩的坑
最近再写一个vue的项目,视频中用的是vue1.0,但是现在vue已经2.0,所以踩了很多坑,先记录下来.理解有误再来修改. 路由问题 之前的路由是写在app.vue里边,而2.0的路由直接有个rou ...
- Github常用用法
基本要求已安装Github客户端 一.新建项目 1.首先创建代码仓库,复制仓库地址: 2.本地带上传文件目录,鼠标右键,打开git -> Git Bash Here -> git init ...
- 图解HTTP系列
第一章 第二章 第三章 第四章 第五章 第六章 第七章 第九章 第十章
- 解决使用Mybatis 传入多参数使用map封装遇到的 “坑”问题
好久没来写些东西了,今天 我分享一下自己遇到的一个“小 坑”,这也许对您来说不是个问题,但是我还是希望对没有遇到过这类问题的朋友给个小小的帮助吧 是这样的,需求:需要实现根据多条件 且分页展示数据 1 ...
- Shell中的数组及其相关操作
http://blog.csdn.net/jerry_1126/article/details/52027539 Shell中数据类型不多,比如说字符串,数字类型,数组.数组是其中比较重要的一种,其重 ...