图片工具GraphicsMagick的安装配置与基本使用

2019-02-12 16:36:23

本文使用GraphicsMagick的版本为1.3.18 (Released March 9, 2013)。

1.简介

GraphicsMagick是一个短小精悍的的图片处理工具和库集合。对于Java开发者来说,常用的图片处理工具有3个,JDK自带的图片处理库,ImageMagick,GraphicsMagick。JDK自带的图片处理库,虽稳定简单,性能却比较差;ImageMagick是目前最流行的图片处理工具,它的功能非常丰富;GraphicsMagick的功能略逊于ImageMagick,但是它的效率更强悍,但大多数情况下,GM的功能已经足够使用了。

功能特色:

(1)使用OpenMP进行多线程图片处理,增强了通过扩展CPU提高处理能力。 

(2)支持大图片的处理,并且已经做过GB级别的图像处理实验。

(3)能够动态的生成图片,特别适用于互联网的应用。

支持格式:超过88种图像格式,包括重要的DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF。

支持平台:Linux、Mac、Windows。

使用方式:GaphicsMagick支持命令行的模式,同时也支持C、C++、Perl、PHP、Tcl、 Ruby等的调用。

2.安装与配置

下载地址:http://www.graphicsmagick.org/download.html

关于版本中的Q8,Q16的说明:

Q8表示: 8-bits per pixel quantum
Q16表示:16-bits per pixel quantum

现在数码相机照的相片,每一种颜色就是8位深,所以建议选Q8。
而使用16-bit per pixel quantums在处理图片时比8-bit慢15%至50%,并须要更多的内存。

(1)Windows下,下载安装包后直接安装即可。

(2)Linux下,与普通的程序安装无异,即解压后到根目录执行以下命令。


./configuremakemake install
PS:如果遇到无法执行的情况,使用root权限进行操作。


3.常用操作

以下说明的是使用命令行的方式。

(1)查看图片信息


gm identify input.jpg
(2)生成缩略图


gm convert input.jpg -thumbnail 100x100 output.jpg

(3)添加水印


gm composite -geometry 100x100% -gravity SouthEast logo.png input.jpg output.jpg

4.更多参考

im4java官方网站:http://im4java.sourceforge.net/index.html         

im4java的api:http://im4java.sourceforge.net/api/         

graphicsmagick的官方网站:http://www.graphicsmagick.org/index.html         

graphicsmagick的命令行参数解析:http://www.graphicsmagick.org/utilities.html




  • 2017-09-13 13:49:21

    Web性能测试:工具之Siege详解

    Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力。可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。siege可以从您选择的预置列表中请求随机的URL。所以siege可用于仿真用户请求负载,而ab则不能。但不要使用siege来执行最高性能基准调校测试,这方面ab就准确很多

  • 2017-09-14 10:18:25

    15分钟成为Git专家

    不管是以前使用过 Git 还是刚开始使用这个神奇的版本控制工具的开发者,阅读了本文以后都会收获颇丰。如果你是应一名有经验的 GIT 使用者,你会更好的理解 checkout -> modify -> commit 这个过程。如果你刚开始使用 Git,本文将给你一个很好的开端。

  • 2017-09-28 16:42:57

    Linux vmstat命令实战详解

    vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。

  • 2017-10-13 16:21:29

    Activity的四种launchMode

    launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task。

  • 2017-10-16 16:45:45

    Android开发技巧:Application和Instance

    在开发过程中,我们经常会需要用到一些全局的变量或者全局的“管理者”,例如QQ,需要有一个“全局的管理者“保存好友信息,各个activity即可直接通过该”管理者“来获取和修改某个好友信息,显然,这样的一个好友信息,保存到某一个具体的activity里面,然后依靠activity的intent来传递参数是不合适。我们有两种方法来实现这样一个全局的管理者,一种是使用C++/Java中常用的单例模式,另一种是利用Android的Application类,下面一一阐述。

  • 2017-11-01 01:30:45

    解决第三方包内jar包冲突

    这个问题就是因为引入jar包的冲突,这时我们可以在build.gradle中添加如下代码,下方单独的是添加的代码

  • 2017-11-06 01:00:17

    撤销git add

    如何撤销git add,不小心执行了git add . 操作,但是又不能提交所有的文件,因为对应不同的分支,现在怎么样可以将git add 撤销回来