GraphicsMagick环境搭建

DinS          Written on 2018/4/2

本专题介绍GraphicsMagick,一个强大的c++图像处理库。

一、概述

GraphicsMagick是一个优秀的c++图像处理库,官网http://www.graphicsmagick.org/。
c++有很多类似的库,为何选择GraphicsMagick呢?
原因一:支持众多图像格式
原因二:现代c++风格,提供了高度抽象和便捷的接口,上手迅速
原因三:文档很详细,跨平台而且build容易(然而配置工程环境比较坑)
原因四:LICENSE好(MIT),可以用于商业软件

二、编译库

本专题以Windows7下VS2015为范例,build GraphicsMagick-1.3.28。
首先获取源代码ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/windows/
然后以下步骤都是参考官方文档执行http://www.graphicsmagick.org/INSTALL-windows.html#installing-from-source-code

解压压缩包,发现里面一大堆内容:

不管这些,进入VisualMagick/configure,打开configure.exe:

核心界面是这个:

该exe的用意是生成程序员指定的sln,熟悉VS开发的对这里面的内容都应该清楚。那个Quantum depth跟图像处理有关,一般而言8足够,效率最高。
有关各个选项更详细的解释见官方文档。

我的选择是这个:

点击下一步会出现这个,默认即可:

完成后返回上一级目录可以找到sln文件:

我选择的是MT所以sln后面也叫MT,打开。

生成的sln是VS7,用更高级的VS版本需要升级:

升级成功后,把ALL这个项目设置为启动项(默认就是),然后清理:

然后可以build了:

等待编译后可以看到结果:

失败了一个?怎么回事?找到原因:

这个其实没什么关系,文档里已经说了,如果不需要X11支持,那么库没法显示图片,这个失败的从名字看跟显示有关。不用管即可。

刚刚是dubug,再build release:

就不展示输出了,也是那个imdisplay失败,不管。

之后在sln的同级目录下可以找到一个叫bin的文件夹,进入:

得到lib。

三、配置Magick++工程环境

build很容易,这个配置环境才是难点,费了我不少时间。

新建一个控制台任务,修改项目属性到MT,注意是x64的,多字节字符集。

这是因为我们build的lib是MT的。

接下来注意,要在另一个工程里使用Magick++需要相当的技巧,我也是琢磨了build时的demo项目研究出来了,可以先来看一下:

大图点这里

附加包含目录有这么多!!!
所以这个事没有看上去那么简单,一步一步来。

首先从源文件夹里拷贝出magick和Magick++,magick是c语言,Magick++是对magick的包装,都需要。可以只保留.h文件,其它的干掉。
然后把刚刚编译好的lib全部拷贝出来,三者整合成一个SDK,目录结构如下:

大图点这里

然后修改工程的属性如下:

注意预处理器里必须这么定义!(自动生成的除外)

为什么要这么麻烦呢?!我感觉制作方心不诚,头文件里各种错位的包含,在不修改头文件的情况下只能这样处理了。

然后在main里写如下代码:

编译:

终于成功!太不容易了。

环境搭建完,接下来可以使用了,见《如何将gif逐帧分解》。