Mac OS x 安装 GraphicsMagick

GraphicsMagick安装、实时生成缩略图
http://elf8848.iteye.com/blog/1708994


----------------------------------------------------------------------------

安装依赖库,参考: ImageMagick +Jmagick安装

安装jpeg包

----------------

brew install libjpeg

安装在了/usr/local/Cellar/jpeg/8d

安装jasper包

----------------

brew install jasper

安装在/usr/local/Cellar/jasper/1.900.1

安装libpng

----------------

由于是Mac ,所以使用brew包管理器,快速安装

rew install libpng

安装在了/usr/local/Cellar/libpng/1.5.13

安装freetype包

----------------

brew install freetype

安装在了/usr/local/Cellar/freetype/2.4.10

安装zlib包

----------------

系统自带不用安装了

自动安装GraphicsMagick

----------------

自动安装:brew install GraphicsMagick

安装在了/usr/local/Cellar/graphicsmagick/1.3.17

查看安装信息:

zhaorai@zhaomatoMacBook-Pro lib$ gm -version

C代码 收藏代码
  1. GraphicsMagick 1.3.17 2012-10-13 Q8 http: // www.GraphicsMagick.org/
  2. Copyright (C) 2002-2012 GraphicsMagick Group.
  3. Additional copyrights and licenses apply to this software.
  4. See http: // www.GraphicsMagick.org/www/Copyright.html for details.
  5. Feature Support:
  6. Thread Safe              yes
  7. Large Files (> 32 bit)   yes
  8. Large Memory (> 32 bit)  yes
  9. BZIP                     yes
  10. DPS                      no
  11. FlashPix                 no
  12. FreeType                 yes
  13. Ghostscript (Library)    no
  14. JBIG                     no
  15. JPEG-2000                yes
  16. JPEG                     yes
  17. Little CMS               no
  18. Loadable Modules         no
  19. OpenMP                   no
  20. PNG                      yes
  21. TIFF                     no
  22. TRIO                     no
  23. UMEM                     no
  24. WMF                      no
  25. X11                      no
  26. XML                      yes
  27. ZLIB                     yes
  28. Host type: x86_64-apple-darwin11.4.2
  29. Configured using the command:
  30. ./configure '--disable-dependency-tracking' '--prefix=/usr/local/Cellar/graphicsmagick/1.3.17'
  31. '--enable-shared' '--disable-static' '--disable-openmp' '--with-gs-font-dir=/usr/local/share/ghostscript/fonts'
  32. '--without-x' 'CC=/usr/bin/llvm-gcc' 'CFLAGS=-Os -w -pipe -march=core2 -msse4 -mmacosx-version-min=10.7'
  33. 'LDFLAGS=-L/usr/local/lib -F/usr/local/Frameworks -L/usr/X11/lib' 'CPPFLAGS=-F/usr/local/Frameworks -I/usr/X11/include'
  34. 'CXX=/usr/bin/llvm-g++' 'CXXFLAGS=-Os -w -pipe -march=core2 -msse4 -mmacosx-version-min=10.7'
  35. Final Build Parameters:
  36. CC       = /usr/bin/llvm-gcc -std=gnu99
  37. CFLAGS   = -Os -w -pipe -march=core2 -msse4 -mmacosx-version-min=10.7 -Wall -D_THREAD_SAFE
  38. CPPFLAGS = -F/usr/local/Frameworks -I/usr/X11/include -I/usr/local/Cellar/freetype/2.4.10/include/freetype2 -I/usr/include/libxml2
  39. CXX      = /usr/bin/llvm-g++
  40. CXXFLAGS = -Os -w -pipe -march=core2 -msse4 -mmacosx-version-min=10.7 -D_THREAD_SAFE
  41. LDFLAGS  = -L/usr/local/lib -F/usr/local/Frameworks -L/usr/X11/lib -L/usr/local/Cellar/freetype/2.4.10/lib -L/usr/lib
  42. LIBS     = -lfreetype -ljasper -ljpeg -lpng15 -lbz2 -lxml2 -lz -lm -lpthread

* –prefix=/opt/local 让ImageMagick/GraphicsMagick与MacPorts的库文件安装到同一个目录。

如果你想要安装到其它目录,则输入不同的目录路径,如果不声明–prefix,默认会将其安装到/usr/local。

* –disable-static和–with-modules使得ImageMagick/GraphicsMagick以动态链接库的方式安装,

现在安装ImageMagick/GraphicsMagick只是为了在Ruby中使用,所以我用–without-perl和–without-magick-plus-plus以免去安装Perl和C++的支持

* –with-quantum-depth=8配置ImageMagick使用8位的色深。默认是16位。参与RMagick Hints & Tips Forum论坛中的讨论Speed up your RMagick apps in 1 easy step了解这个选项有什么作用。

* –with-gs-font-dir=/opt/local/share/ghostscript/fonts让ImageMagick/GraphicsMagick知道Ghostscript字体安装在哪个角落里。

如果你某个目录里有“标准”的windows TrueType字体,也可以设置–with-windows-font-dir=选项让ImageMagick/GraphicsMagick使用它们。

查看ImageMagick/GraphicsMagick的README.txt文件了解更多选项的信息。

手动安装GraphicsMagick

----------------------

手动安装

下载地址 ftp://ftp.graphicsmagick.org/pub/GraphicsMagick/1.3/

tar zvxf GraphicsMagick-1.3.17.tar.gz

cd GraphicsMagick-1.3.17

./configure CC=clang --prefix=/usr/local/GraphicsMagick-1.3.17 --with-quantum-depth=16   --enable-shared --enable-static

make

make install

注意confiure命令后面的CC=clang。它指定了编译器为Mac下推荐使用的clang。如果没有这个参数,Makefile将会使用系统默认的编译器进行编译,而这个编译器不是GraphicsMagic所推荐的,并且在make的过程中会出现以下错误:

C代码 收藏代码
  1. Undefined symbols for architecture x86_64:
  2. "___builtin_object_size" , referenced from:
  3. _BlurImageScanlines.omp_fn.6 in libGraphicsMagick.a(magick_libGraphicsMagick_la-effect.o)
  4. _XShearImage.omp_fn.0 in libGraphicsMagick.a(magick_libGraphicsMagick_la-shear.o)
  5. _YShearImage.omp_fn.1 in libGraphicsMagick.a(magick_libGraphicsMagick_la-shear.o)
  6. ld: symbol(s) not found for architecture x86_64
  7. collect2: ld returned 1 exit status
  8. make[1]: *** [utilities/gm] Error 1
  9. make: *** [all] Error 2
  10. ----------
  11. ld: symbol(s) not found for architecture x86_64
  12. collect2: ld returned 1 exit status
  13. make[1]: *** [magick/ libGraphicsMagick.la ] Error 1
  14. make: *** [all] Error 2

最后还是有错,未成功。

在Mac下为Eclipse程序设定环境变量

事件背景
我平时使用Mac做java开发工作,处理图片使用了GraphicsMagick。
我按规范安装了GraphicsMagick,在 /usr/local/bin目录中也自动建立了gm命令的软连接,在终端(命令行)已可以执行gm命令了。

问题
我平时使用Mac做java开发工作,使用的开发工具是Eclipse。遇到的问题是在Eclipse启动java程序无法找到gm命令。
一般遇到这种问题时,解决的基本思路是:如果找不到gm命令,请设置环境变量,或建立软连接。
这两个方法在windows\Linux操作系统中都OK,就是在Mac OS操作系统中不行。


原因
在Mac下,其GUI程序和终端程序使用了两套不同的环境变量设置。修改profile文件仅仅在使用终端的时候生效,如果想要GUI程序也能继承相应的环境变量设置,则需要从终端启动应用程序才可以。想要为从LauncherPad或Finder中启动的GUI程序设置环境变量的话,则需要额外的步骤。
而且设置的方法,随着Mac OS的版本升级一直在变化。真是恶心阿。

工具
Map<String,String> map=System.getenv();可查看Eclipse已加载的环境变量。
通过上面的工具查看到 PATH=/usr/ bin:/bin:/usr/sbin:/sbin,说明PATH只加载了这4个目录,并未加载/usr/local/bin目录。
在高版本的Mac OS中,还没法改变,真是恶心阿。


解决思路一:建立软连接
在这4个目录(/usr/bin,/bin,/usr/sbin,/sbin)中任意一个目录 中建立gm命令的软连接。
ln -s /usr/local/Cellar/graphicsmagick/1.3.26_1/bin /usr/sbin/gm
ln -s /usr/local/Cellar/graphicsmagick/1.3.26_1/bin /sbin/gm
以上操作都失败,原因是:无权限,root账号都无权限,这是真的。
这是因为:系统集成保护(System Integrity Protection)
在 OS X 10.11 中引入的 Rootless,即使是root用户,将无法对 /System, /bin, /sbin, /usr 目录的修改(/usr/local 目录除外)路径有写和执行权限。
要想关闭Rootless,请看下面的文章:
参考: http://www.cnblogs.com/qq419524837/articles/4919742.html


解决思路二:添加PATH
Mac下的Eclipse,只加载了:PATH=/usr/ bin:/bin:/usr/sbin:/sbin, 其它的不加载。
添加PATH也不行了。
/etc/launchd.conf文件完全失效了。该文件在Yosemite下完全被抛弃了,不会被读取。


解决思路三:环境变量(最终采用的此方案)
GraphicsMagick+Im4Java,Im4Java会自动去找"IM4JAVA_TOOLPATH"环境变量,在这个路径中查找gm命令。

~/.bash_profile (一般在这个文件中添加用户级环境变量)
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!

vi ~/.bash_profile
export IM4JAVA_TOOLPATH=/usr/local/Cellar/graphicsmagick/1.3.26_1/bin

想立即生效请运行: source ~/.bash_profile

加完之后,在终端(命令行)可以查到这个环境变量,但Eclipse中未加载这个环境变量。
具体原因请看上面的“原因”这一段。
还需要做一步工作,使用launchctl setenv指令,给GUI程序添加环境变量。
通过脚本读取~/.bash_profile文件,写这里的环境变量,使用launchctl setenv指令,添加给GUI程序。


修改环境变量后需要重新加载脚本
launchctl unload ~/Library/LaunchAgents/osx-env-sync.plist 先卸载
launchctl load ~/Library/LaunchAgents/osx-env-sync.plist 在重新加载

具体的操作请看下面的文章
http://blog.csdn.net/zhzdeng/article/details/64921967

扩展阅读:
在Mac下为GUI程序设定环境变量
http://zodiacg.net/2013/05/set-path-under-mac/
在Yosemite下为GUI程序设置环境变量
http://zodiacg.net/2015/04/set-environment-variables-on-yosemite/