graphicsmagic编译

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

扫描二维码关注公众号,回复: 387158 查看本文章

之后,直接编译即可。

可能会遇到缺少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。如下图:



 

猜你喜欢

转载自kaixiansheng.iteye.com/blog/2290343
今日推荐