1. 程式人生 > >Go初接觸之imagick

Go初接觸之imagick

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