Golang学习:生成GIF动画

很久没有写博客啦,已经毕业了,也快要入职啦,好紧张呀 ,感觉就连实习的弟弟妹妹们都是大佬,我真的瑟瑟发抖。不过,相信自己可以的啦!!!

公司用的是Go语言,因为之前没有接触过,所以还是先看看最基本的部分

今天看到了GIF图片的制作,觉得还挺有意思的

package mainimport ("image""image/color""image/gif""io""log""math""math/rand""net/http""os""time"
)// 调色板
var (palette = []color.Color{color.White, color.Black}
)const (whiteIndex = 0blackIndex = 1
)func main() {rand.Seed(time.Now().UTC().UnixNano())if len(os.Args) > 1 && os.Args[1] == "web" {handler := func(w http.ResponseWriter, r *http.Request) {lissajous(w)}http.HandleFunc("/", handler)log.Fatal(http.ListenAndServe("localhost:8080", nil))return}lissajous(os.Stdout)
}func lissajous(out io.Writer) {const (cycles  = 5     // 完整的振荡器变化的个数 xres     = 0.001 // 角度分辨率size    = 100   // 图像中画布包含[-100,100]nframes = 64    //动画中的帧数delay   = 8     // 以10ms为单位的帧间延迟)freq := rand.Float64() * 3.0 // 振荡器的相对频率 yanim := gif.GIF{LoopCount: nframes}phase := 0.0for i := 0; i < nframes; i++ {rect := image.Rect(0, 0, 2*size+1, 2*size+1)img := image.NewPaletted(rect, palette)for t := 0.0; t < cycles*2*math.Pi; t += res {x := math.Sin(t)y := math.Sin(t*freq + phase)img.SetColorIndex(size+int(x*size+0.5), size+int(y*size+0.5), blackIndex)}phase += 0.1anim.Delay = append(anim.Delay, delay)anim.Image = append(anim.Image, img)}gif.EncodeAll(out, &anim)
}

就是这个样子啦,就是演示的图片

这里是运行的代码进入该文件的终端go build main.go这里的main.go是我这里的名称,如果你的go文件不是这个名字改成自己的,然后main.exe >1.gif这样执行了之后,就生成了一张名叫1的gif,名称自己定义

参考:《Go语言程序设计》机械工业出版社

Golang学习:生成GIF动画相关推荐

  1. Golang学习-基础命令

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. . Golang学习-基础命令 一.go run 用于运行命令源码文件,只能接收一个命令源码文件以及若干个库源码文件作为 ...

  2. golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题

    golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ...

  3. Golang学习(12)——regex包

    Golang学习 - regexp 包 ------------------------ // 函数 // 判断在 b(s.r)中能否找到 pattern 所匹配的字符串 func Match(pat ...

  4. 一顿烤羊腿换来的Golang学习路线

    作者:阿秀 阿秀的求职笔记:https://interviewguide.cn 你好,我是阿秀. 这篇学习路线写完其实很久了,不过前段时间又请组内的Go后端资深研发工程师吃了一顿烤羊腿. 向他请教了一 ...

  5. golang学习笔记(基础篇)

    LCY~~Golang学习笔记 一.Go语言开发环境 ##安装Go开发包以及VsCode Go开发包与vscode配置安装教程网址:https://www.liwenzhou.com/posts/Go ...

  6. Golang学习笔记之GORM基础使用(二)

    本文章主要学习GORM的增删查改.若还没有完成数据库和数据表的创建.定义模型以及数据库的连接请先学习本本专栏文章Golang学习笔记之GORM基础使用(一).本文为学习笔记,通过GORM官方中文文档和 ...

  7. Unity学习日志_动画系统简介

    Unity学习日志_动画系统简介 Animation,Legacy动画系统 若要使用Animation,需要在创建Clip之前为物体手动添加Animation组件. Animation组件面板: 属性 ...

  8. 【视觉高级篇】18 # 如何生成简单动画让图形动起来?

    说明 [跟月影学可视化]学习笔记. 动画的三种形式 固定帧动画:预先准备好要播放的静态图像,然后将这些图依次播放,实现起来最简单,只需要为每一帧准备一张图片,然后循环播放即可. 增量动画:就是在每帧给 ...

  9. R语言ggplot2可视化:使用gganimate包和gapminder包为生成的动画文件gif设置尺寸、分辨率

    R语言ggplot2可视化:使用gganimate包和gapminder包为生成的动画文件gif设置尺寸.分辨率 目录

  10. 生成Gif动画缩略图-Gif动画水印的改进

    前面的文章中,实现过Gif动画添加水印,虽然目前还有一些悬而未决的问题有待解决,但对于大多数情况还是挺实用的,看园子里面有人发生成缩略图的文章,将原来的水印部分代码加以改造,实现了从Gif动画生成Gi ...

最新文章

  1. 【Spring】spring基于注解的声明式事务控制
  2. MYSQL5-7版本sql_mode=only_full_group_by问题
  3. 真正的不重复数字实现,像人一样去编程
  4. 5G NR PUCCH资源配置
  5. java.io.File.setExecutable(boolean executable) 方法来设置所有者对于此抽象路径名执行权限。
  6. 探索适用于Apache Spark的Spline Data Tracker和可视化工具(第1部分)
  7. Tree(HDU-5060)
  8. qfile.remove 删除已经被加载的文件_Milvus数据管理:删除的实现原理
  9. 思科网络学习笔记 | 路由概念
  10. 数据整理——大数据治理的关键技术
  11. Pytorch3D环境血泪安装史
  12. 浦瑞克扫地机器人好用吗_爱她就送她浦瑞克扫地机器人
  13. 超级计算机 人脑,世界第4超级计算机竟被人脑秒成渣,人类的大脑究竟多厉害?...
  14. 根文件系统(rootfs)理解
  15. lopa分析_什么是LOPA分析?
  16. 二十八、动词不定式 2 做表语、宾语、后置定语、状语
  17. python将汉字转为拼音字母_科学网—[转载]python中文汉字转拼音 - 陈明杰的博文...
  18. redis实现轮询算法_白话分布式系统中的一致性哈希算法
  19. 工业互联网·能耗监控暖通空调远程监控系统方案
  20. google maps

热门文章

  1. 远程通讯测试软件,USR-TCP232-304和虚拟串口软件通讯测试
  2. Ubuntu20 运行不了网络助手NetAssist
  3. xshell7,xftp7个人免费版官方下载,无需破解,免激活,下载即可使用
  4. 计算机领域数据集下载链接
  5. Navicat for MySQL 破解版
  6. 一秒学会,小白也能上手,最简单的装逼代码
  7. WSL使用史上最详细教程
  8. Linux系统中用源代码编译安装软件和查看进程
  9. 论文综述(KNN算法)
  10. 【老生谈算法】matlab实现遗传算法优化源码——遗传算法