package main import ( "image" "image/color" "image/png" "log" "math" "os" ) func main() { // 图片大小 const size = 300 // 根据给定大小创建灰度图 pic := image.NewGray(image.Rect(0, 0, size, size)) // 遍历每个像素 for x := 0; x < size; x++ { for y := 0; y < size; y++ { // 填充为白色 pic.SetGray(x, y, color.Gray{255}) } } // 从0到最大像素生成x坐标 for x := 0; x < size; x++ { // 让sin的值的范围在0~2Pi之间 s := float64(x) * 2 * math.Pi / size // sin的幅度为一半的像素。向下偏移一半像素并翻转 y := size/2 - math.Sin(s)*size/2 // 用黑色绘制sin轨迹 pic.SetGray(x, int(y), color.Gray{0}) } // 创建文件 file, err := os.Create("sin.png") if err != nil { log.Fatal(err) } // 使用png格式将数据写入文件 png.Encode(file, pic) //将image信息写入文件中 // 关闭文件 file.Close() }
// 图片大小 const size = 300 // 根据给定大小创建灰度图 pic := image.NewGray(image.Rect(0, 0, size, size)) // 遍历每个像素 for x := 0; x < size; x++ { for y := 0; y < size; y++ { // 填充为白色 pic.SetGray(x, y, color.Gray{255}) } }代码说明如下:
// 从0到最大像素生成x坐标 for x := 0; x < size; x++ { // 让sin的值的范围在0~2Pi之间 s := float64(x) * 2 * math.Pi / size // sin的幅度为一半的像素。向下偏移一半像素并翻转 y := size/2 - math.Sin(s)*size/2 // 用黑色绘制sin轨迹 pic.SetGray(x, int(y), color.Gray{0}) }代码说明如下:
rate := x / size s := rate * 2 * math.Pix 的范围是 0 到 size,因此除以 size 后,rate 的范围是 0~1 之间,再乘以 2π 后,s 的范围刚好是 0~2π 之间。
// 创建文件 file, err := os.Create("sin.png") if err != nil { log.Fatal(err) } // 使用PNG格式将数据写入文件 png.Encode(file, pic) //将image信息写入文件中 // 关闭文件 file.Close()代码说明如下:
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有