操作系统CentOS release 5.3 (Final),gcc (GCC) 4.2.4
1.安装GraphicsMagick。
先从http://sourceforge.net/projects/graphicsmagick/files/graphicsmagick/1.3.16/ 下载最新源码包,存放在/usr/local/src目录
yum install freetype yum install gd-devel yum install libgomp yum install libjpeg libjpeg-devel yum install libpng libpng-devel cd /usr/local/src tar zvxf GraphicsMagick-1.3.16.tar.gz cd GraphicsMagick-1.3.16 ./configure --enable-shared=yes --with-jpeg=yes --with-jp2=yes --with-png=yes --disable-openmp make make install
注意:必须安装libjpeg, libjpeg-devel和libpng,libpng-devel,在configure之后观察输出,确保下图红色区域值为yes!
安装之后,在命令行测试
gm convert a.jpg -thumbnail '100x100' a100.jpg
把a.jpg缩放成100x100大小的a100.jpg,可以把两张图复制到windows下查看。
2.安装pgmagick。
在http://pypi.python.org/pypi/pgmagick/ 下载 pgmagick-0.5.1.tar.gz,存放在/usr/local/src目录
执行以下命令:
tar zvxf pgmagick-0.5.1.tar.gz cd pgmagick-0.5.1 python setup.py install
此时报错如下:
/usr/include/boost/python/converter/registered.hpp:88: error: no matching function for call to 'registry_lookup (const volatile void (*)())'
原因和解决方法如下:
Scons/Boost/Python no longer supports void*.
when compiling PythonMagick, upgrade your Boost Python to 1.34
remove all the pre-compiled boost rpms from the system
remove all the pre-compiled GraphicsMagick rpms from the system
compile boost-1.49.0 manually, using ./configure --prefix=/usr --enable-shared=yes
reinstall GraphicsMagick-1.3.14, GraphicsMagick-c++-1.3.14, GraphicsMagick-devel-1.3.14 and GraphicsMagick-c++-devel-1.3.14 via yum
clone the pgmagick repository from bitbucket
run python setup.py install again within the pgmagick directory
http://stackoverflow.com/questions/10110378/how-to-build-pgmagick-on-linux-centos
虽然是imagemagick的,但是两者很类似,于是升级Boost。
从http://sourceforge.net/projects/boost/files/boost/1.50.0/ 这里下载最新的boost。
注意:安装boost时必须先卸载系统自带的boost!
查看系统装的rpm包boost相关包
rpm -qa|grep boost 以下为输出: boost-1.33.1-10.el5 boost-devel-1.33.1-10.el5
使用rpm -e卸载相关包
rpm -e boost-1.33.1-10.el5
根据http://www.boost.org/doc/libs/1_50_0/more/getting_started/unix-variants.html#easy-build-and-install 安装boost。
安装之后再安装pgmagick,提示以下内容说明安装成功:
creating dist
creating 'dist/pgmagick-0.5.1-py2.7-linux-i686.egg' and adding 'build/bdist.linux-i686/egg' to it
removing 'build/bdist.linux-i686/egg' (and everything under it)
Processing pgmagick-0.5.1-py2.7-linux-i686.egg
Copying pgmagick-0.5.1-py2.7-linux-i686.egg to /usr/local/lib/python2.7/site-packages
Adding pgmagick 0.5.1 to easy-install.pth file
Installed /usr/local/lib/python2.7/site-packages/pgmagick-0.5.1-py2.7-linux-i686.egg
Processing dependencies for pgmagick==0.5.1
Finished processing dependencies for pgmagick==0.5.1
在python命令行验证一下:
>>> from pgmagick import Image, FilterTypes
>>> im = Image('input.jpg')
>>> im.quality(100)
>>> im.filterType(FilterTypes.SincFilter)
>>> im.scale('100x100')
>>> im.sharpen(1.0)
>>> im.write('output.jpg')
注意:刚安装完pgmagick,输入from pgmagick import Image, FilterTypes,会提示:ImportError: cannot import name _pgmagick,ctrl+D退出终端再登陆后再执行就ok了!
参考链接:
http://blog.youkuaiyun.com/hairetz/article/details/6367212
http://rhaseventh.blogspot.com/2008/10/rmagick2so-shared-object-cannot-be.html