這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
今天研究了golang產生縮圖的相關知識,在網上找到一篇不錯的相關部落格,部落格地址:http://www.cnblogs.com/ghj1976/p/3445507.html。
有個注意事項這裡提醒一下:
官方文檔原話:
Image介面可以通過調用如NewRGBA和NewPaletted函數等獲得;也可以通過調用Decode函數解碼包含GIF、JPEG或PNG格式映像資料的輸入資料流獲得。解碼任何具體映像類型之前都必須註冊對應類型的解碼函數。註冊過程一般是作為包初始化的副作用,放在包的init函數裡。因此,要解碼JPG映像,只需在程式的main包裡嵌入如下代碼:
import _ “image/JPG”
_表示匯入包但不使用包中的變數/函數/類型,只是為了包初始化函數的副作用。
整理了一下代碼:
package mainimport ( "code.google.com/p/graphics-go/graphics" "image" _ "image/jpeg" //必須import,否則會出現:unknown format,其餘類似 "image/png" "log" "os")//讀取檔案func LoadImage(path string) (img image.Image, err error) { file, err := os.Open(path) if err != nil { log.Fatal("open file fail:", err) return } defer file.Close() img, _, err = image.Decode(file) //解碼圖片 return}//儲存檔案func SaveImage(path string, img image.Image) (err error) { imgfile, err := os.Create(path) defer imgfile.Close() err = png.Encode(imgfile, img) //編碼圖片 if err != nil { log.Fatal("Save fail:", err) } return}func main() { src, err := LoadImage("1.jpg") if err != nil { log.Fatal("open fail:", err) } dst := image.NewRGBA(image.Rect(0, 0, 100, 100)) err = graphics.Scale(dst, src) //縮小圖片 if err != nil { log.Fatal(err) } SaveImage("thumbnailimg.png", dst)}
著作權聲明:轉載請註明部落格來源,謝謝。