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
它支持的几个效果举例:
效果:一个旋转前,一个旋转后
代码例子:
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: }