Go GIF 动画

代码:

package main

import (
    "image"
    "image/gif"
    "image/color"
    "os"
    "math"
    "io"
)
var palette = []color.Color{color.Black,color.RGBA{0,255,0,255}}
const (
    blackIndex = 0
    greenIndex = 1
)

func main() {
    drawSin(os.Stdout)
}

func drawSin(out io.Writer) {
    const (
        nframes = 80   //帧数
        resolution = 0.0001  //分辨率
        size = 300   //画布大小
        delay = 10  //延迟
    )
    anim := gif.GIF{LoopCount: nframes}
    x := 0.0
    for i := 0; i < nframes; i++ {
        rect := image.Rect(0,0,size,size)
        img := image.NewPaletted(rect,palette)
        for t := 0.0; t < size; t += resolution {
            y := size / 2 *math.Sin(t + x);
            img.SetColorIndex(int(t + 0.5),int(size / 2 + y),greenIndex)
        }
    x  += 3 * resolution
    anim.Delay = append(anim.Delay,delay)
    anim.Image = append(anim.Image,img)
    }
    gif.EncodeAll(out,&anim)
}

效果:

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值