1. 下载源码
地址:https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/
找到对应版本下载
解压:tar -zxvf GraphicsMagick-1.3.20.tar.gz
2. 编译步骤
a. bash ../configure(configure文件的路径) -prefix=/home/hzliukai/space/C/GraphicsMagick-1.3.20/build(安装的路径)
b. make
如果提示
如果gcc等工具已经安装,则可能是Makefile和libtool问题。有两种解决方法:
1. 检查/bin/sh的软链接,linux默认指向dash,把/bin/sh指向bash
2. 将Makefile和libtool中的SHELL=/bin/sh修改为/bin/bash
之后,直接编译即可。
可能会遇到缺少X11/extensions/shape.h文件的情况,需要安装x11库
c. make install
执行make install可以将gm生成到prefix所指向的位置。
3. 支持webp
gm支持webp需要将webp的lib库编译进去具体步骤为:
先下载libwebp-0.3.0.tar.gz tar -zxvf libwebp-0.3.0.tar.gz cd libwebp-0.3.0 ./configure && make && make install cp /usr/local/lib/libwebp.so.4.0.2 /usr/lib64/ ln -s /usr/lib64/libwebp.so.4.0.2 /usr/lib64/libwebp.so.4 ln -s /usr/lib64/libwebp.so.4.0.2 /usr/lib64/libwebp.so
编译步骤为在前面的基础上加上:--with-webp
通过gm -version判断是否支持webp
4. 性能优化
按照上述步骤编译出来的版本性能较差,如果要提升性能,需要关闭openmp。编译的时候添加:
--disable-openmp
因此总的编译命令为:
bash ../configure(configure文件的路径) -prefix=/home/hzliukai/space/C/GraphicsMagick-1.3.20/build(安装的路径) --with-webp --disable-openmp
原因是:开启openmp后,gm多线程只会在一个核上运行,无法充分发挥多核CPU的性能。这是由于jpeg库造成的,libjpeg is not thread safe,而我们处理的大部分图片都是jpeg的,在处理jpeg图片时,gm会转成单线程运行,所以打开openmp后会造成性能下降。
不推荐的解决方案:修改coders/jpeg.c文件,在RegisterJPEGImage() 函数中把两个entry->thread_support的值改为True。如下图: