拾贝博客

——积累知识,胜于积累金银

Windows下 GO使用 Imagemagick处理缩略图

作者:晨檬 向 | 发表于  2020年2月18日 (2829)

概述

大家都知道在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!


 

分类:技术分享

标签: golang ImageMagick 图像 编程 缩略图

分享:

 我来说两句

评论列表

相关文章