Go初接觸之imagick
阿新 • • 發佈:2018-04-18
get 對象 top ola error AI AR rap des
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