Golang 的图片出来通过提供操作每一个像素点设置颜色(http://www.cnblogs.com/ghj1976/p/3441536.html) 和 提供通过可选蒙版图片重叠操作 (http://www.cnblogs.com/ghj1976/p/3443638.html) 这两种基础方式,这样任何想要的效果都可以自己实现, 但是旋转、缩放等相关的图像算法也是比较麻烦的,这时候我们就需要借助官方提供的图片包处理了,图片包在:https://code.google.com/p/graphics-go

获取方法: go get code.google.com/p/graphics-go/graphics

它支持的几个效果举例:

 

效果:一个旋转前,一个旋转后

Golang官方图片库 Golang官方图片库

代码例子:

1: package main
   2:  
   3: import (
  10: )
  11:  
  12: func main() {
)
if err != nil {
  15:         log.Fatal(err)
  16:     }
  17:  
  18:     dst := image.NewRGBA(image.Rect(0, 0, 350, 400))
  19:  
  20:     err = graphics.Rotate(dst, src, &graphics.RotateOptions{3.5})
if err != nil {
  22:         log.Fatal(err)
  23:     }
  24:  
// 需要保存的文件
  26:     imgcounter := 123
, imgcounter), dst)
  28: }
  29:  
// LoadImage decodes an image from a file.
  31: func LoadImage(path string) (img image.Image, err error) {
  32:     file, err := os.Open(path)
if err != nil {
return
  35:     }
  36:     defer file.Close()
  37:     img, _, err = image.Decode(file)
return
  39: }
  40:  
// 保存Png图片
  42: func saveImage(path string, img image.Image) (err error) {
// 需要保存的文件
  44:     imgfile, err := os.Create(path)
  45:     defer imgfile.Close()
  46:  
// 以PNG格式保存文件
  48:     err = png.Encode(imgfile, img)
if err != nil {
  50:         log.Fatal(err)
  51:     }
return
  53: }

相关文章: