golang创建gif图片代码

14 篇文章 1 订阅

采用golang的image,image/gif包很容易创建gif图片,参考艾伦的书,写demo如下:

package main

import (
	"image"
	"image/color"
	"image/gif"
	"os"
)
var palette=[]color.Color{color.White,color.Black,color.RGBA{0x22,0xCC,0x33,0xff}}
func main(){
	const (
		nframes =100
		delay = 8
		size = 200
	)
	phase :=0
	anim :=gif.GIF{LoopCount:nframes}
	for i:=0;i<nframes;i++ {
		rect :=image.Rect(0,0,size+1,size+1)
		img :=image.NewPaletted(rect,palette)
		for t:=0;t<size;t++ {
			x:=phase
			y:=t
			img.SetColorIndex(x,y,1)
		}
		phase+=size/nframes
		anim.Delay=append(anim.Delay,delay)
		anim.Image=append(anim.Image,img)
	}
	var filename ="test.gif"
	if len(os.Args)>1 {
		filename =os.Args[1]+".gif"
	}
	file,_:=os.Create(filename)
	defer file.Close()
	gif.EncodeAll(file,&anim)
}
其中palette是画板的颜色数组,白色是底色,数组的index为1的是黑色,即画笔的颜色,在img.SetColorIndex中,1表示的是黑色,2表示颜色{0x22,0xCC,0x33,0xff},为亮绿色。

nframes表示gif图片的帧数,delay表示帧间的时间间隔,size表示图像的大小。

anim是GIF图片的结构体,有3个属性,LoopCount,Delay,Image

双重循环,来设置gif图像的内容,y为一条竖线,x是让这条竖线随时间移动。

最后是输出文件名,使用方法如下:

go build gif.go
./gif test1
输出图片如下:


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值