概述
大家都知道在Golang是跨平台的,可能有很多朋友像我一样,目标平台是Linux,但开发环境却是Windows;
想在项目引入ImageMagick;一开始按找之前的方式go get 后编译发现根本行不通;需要一堆的依赖,网上查了一通,写的的都比较零散,ImageMagick这个库比较NB以后用的多,所以在此记录一下过程。
环境准备
1.MSSYS
下载:
https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/
安装并运行
安装的时间稍微有点久。
更新镜像源
不更新镜像源慢的要死,必须换哦。
编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
然后执行 pacman -Sy
是不是感觉在玩ArchLinux,没错就是用的这个工具,但他们的源不一样哦。
:smile: :smile: :smile: :smile:并且现在的速度也是杠杠达。
安装主角ImageMagick
- 在MSSYS中运行:
pacman -Syuu
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-pkg-config
pacman -S mingw-w64-x86_64-zlib
pacman -S mingw-w64-x86_64-imagemagick
2.设置环境变量(在CMD中)运行:
set PATH=D:\msys64\mingw64\bin;%PATH%
set PKG_CONFIG_PATH=D:\msys64\mingw64\lib\pkgconfig
set MAGICK_CODER_MODULE_PATH=D:\msys64\mingw64\lib\ImageMagick-7.0.9\modules-Q16HDRI\coders
3.编译imagick
go build gopkg.in/gographics/imagick.v3/imagick
写个例子
只贴出关键代码,整个工程太大,是拾贝云文库的一部分,不方便全部拿出来。
// saveThumbnail 生成缩略图
func (c *avatarController) saveThumbnail(r *http.Request, savePath string) error {
var buf []byte
var err error
if buf, err = ioutil.ReadAll(r.Body); err != nil {
return err
}
imagick.Initialize()
defer imagick.Terminate()
mw := imagick.NewMagickWand()
err = mw.ReadImageBlob(buf)
if err != nil {
return err
}
// Get original logo size
width := mw.GetImageWidth()
height := mw.GetImageHeight()
w, h := c.calculateRatioFit(width, height)
err = mw.ThumbnailImage(w, h)
// err = mw.ResizeImage(w, h, imagick.FILTER_LANCZOS, 1)
if err != nil {
return err
}
err = mw.SetImageCompressionQuality(95)
if err != nil {
return err
}
err = mw.WriteImage(savePath)
if err != nil {
return err
}
return nil
}
}
到此Golang windows下使用ImageMagick的过程全部结束。
thanks!