Mac OS X Mojave 下安装 imagemagick

imagemagick 是处理图片比较优秀的一个C拓展,它为很多语言提供了调用接口。项目组中也刚好用到了 imagemagick 这个C库做一些事情,突然想用GO起个图片处理的服务类似又拍的动态裁图。遇见了下面的问题于是就记录了下来

目前需求

  • 开发环境 Mac OS X Mojave
  • 语言 GO && PHP

不管是哪种语言我们都需要的是安装上 imagemagick这一个工具

在执行

1
go get gopkg.in/gographics/imagick.v2/imagick

抛出如下的异常

1
2
3
4
5
6
7
 ~/code/go/http/14-goroutine  go get gopkg.in/gographics/imagick.v2/imagick
# gopkg.in/gographics/imagick.v2/imagick
../../src/gopkg.in/gographics/imagick.v2/imagick/affine_matrix.go:8:10: fatal error: 'wand/MagickWand.h' file not found
#include <wand/MagickWand.h>
^~~~~~~~~~~~~~~~~~~
1 error generated.

回看 imagick go的文档有这样一段的描述

1
2
3
master (tag v2.x.x): 6.9.0-2 <= ImageMagick <= 6.9.9-35
im-7 (tag v3.x.x): 7.x <= ImageMagick <= 7.x
legacy (tag v1.x.x): 6.7.x <= ImageMagick <= 6.8.9-10

那么我们通过 brew 安装下看下 ImageMagick 的版本

ImageMagick 版本

那么可以认定因为版本原因造成了上述的报错,我们只用调用相应版本的库就好

1
2
3
brew install ImageMagick

go get gopkg.in/gographics/imagick.v3/imagick

源码安Iimagick

imagemagick安装包

1
2
3
4
5
6
curl -O ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar -zxf ImageMagick.tar.gz
cd ImageMagick--7.0.7-21/
./configure --prefix=/usr/local/ImageMagick
make
sudo make install

如果 Mac OS X 下会抛出如下的错误信息,这种头文件丢失的原因是

1
<libxml/parser.h> no such file or directory

Mac os X 10.14已经停止将包含库放置在它们通常的位置,/usr/include只将它们保存在XCode目录中。

但是它保留了一个遗留安装程序可以再老位置安装头文件我们把它放到桌面并且运行

1
2
cp /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg ~/Desktop

然后重新

1
2
make
sudo make install

最后把执行文件的软链接放到相应系统目录就好


参考文档内容

https://imagemagick.org/script/command-line-processing.php

https://silvae86.github.io/sysadmin/mac/osx/mojave/beta/libxml2/2018/07/05/fixing-missing-headers-for-homebrew-in-mac-osx-mojave/

https://github.com/gographics/imagick

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

请我喝杯咖啡吧~