Go初接触之imagick

Posted Torrance_ZHANG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go初接触之imagick相关的知识,希望对你有一定的参考价值。

  imagemagick是一个著名的图片处理库,github上有人将其封装成了golang能用的库,所以依旧是写一个缩略图的程序。今天看项目源码看的我头都大了。

 1 package main
 2 
 3 import ("fmt"
 4     "gopkg.in/gographics/imagick.v2/imagick")
 5 
 6 func GetCompressImage(srcImage, dstImage string, quality uint) {
 7     //初始化imagick对象
 8     imagick.Initialize()
 9     defer imagick.Terminate()
10     var err error
11     //创建新的MagicWand
12     mw := imagick.NewMagickWand()
13     //读取文件
14     err = mw.ReadImage(srcImage)
15     if err != nil {
16         fmt.Println("error1!")
17     }
18     //得到并重设图片大小
19     width := mw.GetImageWidth()
20     height := mw.GetImageHeight()
21 
22     hWidth := uint(width / 2)
23     hHeight := uint(height / 2)
24 
25     err = mw.ResizeImage(hWidth, hHeight, imagick.FILTER_LANCZOS, 1)
26     if err != nil {
27         fmt.Println("error2!")
28     }
29     //改变图片质量
30     err = mw.SetImageCompressionQuality(quality)
31     if err != nil {
32         fmt.Println("error3!")
33     }
34     //导出图片
35     mw.WriteImage(dstImage)
36 }
37 
38 func main() {
39     GetCompressImage("/Users/zhanghaoran/Desktop/abc_compress.jpg", "/Users/zhanghaoran/Desktop/abc_compress2.jpg", 80)
40 }

  使用了go自带的性能测试发现处理200张图片花了2.252s,而libjpeg-turbo所写程序之用了0.9s,效率确实差了不少。

以上是关于Go初接触之imagick的主要内容,如果未能解决你的问题,请参考以下文章

Go初接触之libjpeg-turbo

Go初接触之归并排序

Go初接触之image

Go+之环境安装与程序初体验

我的Go+语言初体验——用Go+写个爬虫并进行数据处理

我的Go+语言初体验——Go+ 基本语法之 Switch