本文我们再介绍一种 in-memory image 的类型,叫 Paletted,然后再使用这种类型的 in-memory 来绘制三角函数图像。

1. Paletted

定义如下:


图1 Paletted 类型

Paletted 的中文含义是调色板,相信大家都见过。


图2 调色板

调色板上放有很多种不同颜色的颜料,这都是事先调好的,然后放在板子上面。在 go 语言里,Paletted 类型也扮演着类似的角色,如果你想使用 Paletted,也需要事先构造好很多颜色值,放到调色板上去。最后想使用某种颜色的时候,就可以说,我想使用 3 号颜色,我想使用 4 号颜色,而不是说我想使用绿色,使用浅绿色了。

我们使用下面的函数来创建一个调色板:

func NewPaletted(r Rectangle, p color.Palette) *Paletted

其中,color.Palette 定义如下:

type Palette []Color

这像极了 C 语言里给类型取别名的操作 typedef,如果要写成 C 语法,就是这样的:

typedef Color[] Palette

接下来,我们只需要构造一个 []Color 的 slice 对象就可以使用 NewPaletted 来创建调色板啦。

palette := []color.Color{color.White, color.RGBA{255, 0, 0, 0}}
rec := image.Rect(0, 0, 2*size, 2*size)
image := image.NewPaletted(rec, palette)

最后,再给 in-memory 上色的时候,就可以直接使用调色板上的颜色了。这个函数是:

func (p *Paletted) SetColorIndex(x, y int, index uint8)

它的第三个参数表示调色板上的颜色位置。

最后注意了,创建出来的 in-memory 的默认颜色是调色板第 0 号颜色。

2. 完整代码

package mainimport ("fmt""image""image/color""image/jpeg""math""os"
)const (size = 128
)func main() {palette := []color.Color{color.White, color.RGBA{255, 0, 0, 0}}rec := image.Rect(0, 0, 2*size, 2*size)// 画布的颜色默认就是白色了,因为第 0 号颜色是白色。image := image.NewPaletted(rec, palette)for t := 0.0; t < 2*math.Pi; t += 0.001 {x := int(2.0*size*t/(2.0*math.Pi) + 0.5)y := int(size + 100*math.Sin(t) + 0.5)image.SetColorIndex(x, 2*size-y, 1)}// 这里我们使用 jpeg 编码器来生成 jpg 图像options := jpeg.Options{Quality: 100}err := jpeg.Encode(os.Stdout, image, &options)if err != nil {fmt.Fprintf(os.Stderr, "%v\n", err)}
}

3. 总结

  • 掌握 Paletted 使用方法

练习:给调色板增加更多的颜色。

008-绘制三角函数图像(二)相关推荐

  1. 【Python】使用 Matplotlib 绘制“三角函数”图像 || plt.subplot(2, 2, 3) 将图像分区 || plt.plot(x, y, “r-v“) 中第三个参数说明

    文章目录 一.绘制 三角函数图像 二.函数图像 如何带颜色?如何不带颜色 三. plt.subplot(2, 2, 3) 将图像分区(举例说明 一.绘制 三角函数图像 要求:使用 Python语言,运 ...

  2. 用计算机绘制函数图像ppt,ppt中怎么绘制三角函数图像?

    ppt中怎么绘制三角函数图像? 2018-03-16 20:22 责任编辑:砕月 导读 / 教学中我们最常用的莫过于ppt演示文稿了,除了基本的演示功能外,它也可以制作函数图像,如果利用ppt来制作函 ...

  3. python绘制三角函数图像

    利用matplotlib和numpy库绘制三角函数图像,包括正弦函数.余弦函数.正切函数.余切函数图像 代码如下: import numpy as np import matplotlib as mp ...

  4. matplotlib 绘制三角函数图像

    import matplotlib.pyplot as plt #导入matplotlib库 import numpy as np #导入numpy库 from matplotlib.font_man ...

  5. H5 Canvas绘制三角函数图像

    三角函数sin.cos.tan.sinh.cosh.tanh js 的Math库,自带了许多常见函数方法,其中关于 三角函数的求解还是很齐全的,于是想到,利用canvas 绘制一个比较准确的 sin. ...

  6. python怎么画简单图片-Python绘制简易的二维图像

    大家好,我是飞向天空的牛. 最近学习了一下用Python绘制简易的二维图像,代码如下图所示:绘图代码 文本如下: import matplotlib.pyplot as plt import nump ...

  7. 【Qt】2D绘图之绘制图像(二)

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 绘制QImage图像 04. 绘制QPixmap图像 05. 绘制QPicture图像 06. 综合对比 07. 附录 0 ...

  8. python绘制曲线y=2x+5_Python绘制简易的二维图像

    大家好,我是飞向天空的牛. 最近学习了一下用Python绘制简易的二维图像,代码如下图所示:绘图代码 文本如下: import matplotlib.pyplot as plt import nump ...

  9. Python笔记之用turtle库绘制三角函数和反三角函数的图像(考研党福利)

    文章目录 前言 程序源代码 函数图像 sin(x)图像 arcsin(x)图像 cos(x)图像 arccos(x)图像 tan(x)图像 arctan(x)图像 cot(x)图像 arccot(x) ...

最新文章

  1. PhpMyAdmin的简单安装和一个mysql到Redis迁移的简单例子
  2. matlab入门笔记3
  3. .NET 11 个 Visual Studio 代码性能分析工具
  4. 说实话,Hibernate 和 MyBatis 哪个更好用?
  5. Java 全半角转换
  6. 牛刀小试MySQL--基于GTID的replication
  7. python selenium翻页_Selenium翻页的实现方法实例
  8. 拓扑排序排课系统_木犀互联网技术周刊(第四十五期): 分布式系统简介
  9. 专业运维配的vsftpd.conf
  10. 诚意满满的奉上2000套Axure原型图设计源文件UI UX交互设计案例
  11. 开源人脸106关键点
  12. Unity 使用LitJson 解析Json数据
  13. 密码学——常见的密码学习总结
  14. 腾讯与360继续争,受益的是谁?
  15. c语言绕过dnf检测,过掉DNF游戏保护,仅供学习研究。不得用于非法途径
  16. 《德鲁克管理思想精要》读书笔记1 - 管理是什么?
  17. 您全面了解“含胸拔背”吗?
  18. Android动画渲染过程及原理(matrix),matrix动画,动画优化
  19. android apk 微信登入_微信第三方登录(Android 实现)
  20. 阿里天池大赛脱敏多标签文本分类初赛20名方案分享

热门文章

  1. MySQL主从不一致问题处理
  2. Leetcode215 寻找数组中第K大的数
  3. 关于2014年度专业技术人员资格考试计划及有关问题的通知
  4. Bootstrap进行响应式页面的布局一
  5. 小偏方!不看,走宝.
  6. python创意爱情代码-13种编程语言的命名创意,非常有趣!
  7. Centos6.5系统时间慢8小时解决方案
  8. PHP构造函数的继承问题
  9. 测试/测试开发复习2
  10. Backbone.js 1.1.2