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