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,效率确实差了不少。

原文地址:https://www.cnblogs.com/Torrance/p/8877039.html