package main import ( "os" "image" "image/color" "image/png" "image/draw" "flag" "io/ioutil" "log" "github.com/golang/freetype" "golang.org/x/image/font" "bufio" ) func Drawing(text,text1,text2 []string){ var ( dpi = flag.Float64("dpi", 72, "screen resolution in Dots Per Inch") fontfile = flag.String("fontfile", "./src/sms_v1/etc/阿丽达黑体.ttf", "filename of the ttf font") hinting = flag.String("hinting", "none", "none | full") size = flag.Float64("size", 20, "font size in points") spacing = flag.Float64("spacing", 1.5, "line spacing (e.g. 2 means double spaced)") wonb = flag.Bool("whiteonblack", false, "white text on a black background") ) flag.Parse() // Read the font data. fontBytes, err := ioutil.ReadFile(*fontfile) if err != nil { log.Println(err) return } f, err := freetype.ParseFont(fontBytes) if err != nil { log.Println(err) return } // Initialize the context. fg, bg := image.Black, image.White //ruler := color.RGBA{220, 220, 220, 200} if *wonb { fg, bg = image.White, image.Black //ruler = color.RGBA{220, 220, 220, 200} } // f1, err := os.Open("aa.png") // if err != nil { // panic(err) // } // defer f1.Close() // m1, err := png.Decode(f1) //if err != nil { // panic(err) //} //bounds := m1.Bounds() rgba := image.NewRGBA(image.Rect(0, 0, 640, 480)) draw.Draw(rgba, rgba.Bounds(), bg, image.ZP, draw.Src) //draw.DrawMask(rgba, bounds, bg, image.ZP,, draw.Src) c := freetype.NewContext() c.SetDPI(*dpi) c.SetFont(f) c.SetFontSize(*size) c.SetClip(rgba.Bounds()) c.SetDst(rgba) c.SetSrc(fg) switch *hinting { default: c.SetHinting(font.HintingNone) case "full": c.SetHinting(font.HintingFull) } // Draw the guidelines. //for y := 0; y < 480; y++ { // for x := 0; x < 640; x++ { // // 设置某个点的颜色,依次是 RGBA // rgba.Set(x, y, color.RGBA{uint8(x), uint8(y), 0, 255}) // } // } for y := 100; y < 130; y++ { for x := 10; x < 620; x++ { // 设置某个点的颜色,依次是 RGBA rgba.Set(x, y, color.RGBA{190, 190, 190, 255}) } } for y := 130; y < 160; y++ { for x := 10; x < 620; x++ { // 设置某个点的颜色,依次是 RGBA rgba.Set(x, y, color.RGBA{28, 172, 255, 255}) } } for y := 160; y < 190; y++ { for x := 10; x < 620; x++ { // 设置某个点的颜色,依次是 RGBA rgba.Set(x, y, color.RGBA{190, 190, 190, 255}) } } for y := 190; y < 220; y++ { for x := 10; x < 620; x++ { // 设置某个点的颜色,依次是 RGBA rgba.Set(x, y, color.RGBA{28, 172, 255, 255}) } } for y := 220; y < 250; y++ { for x := 10; x < 620; x++ { // 设置某个点的颜色,依次是 RGBA rgba.Set(x, y, color.RGBA{190, 190, 190, 255}) } } for y := 250; y < 280; y++ { for x := 10; x < 620; x++ { // 设置某个点的颜色,依次是 RGBA rgba.Set(x, y, color.RGBA{28, 172, 255, 255}) } } for y := 280; y < 310; y++ { for x := 10; x < 620; x++ { // 设置某个点的颜色,依次是 RGBA rgba.Set(x, y, color.RGBA{190, 190, 190, 255}) } } // Draw the text. pt := freetype.Pt(10, 100+int(c.PointToFixed(*size)>>6)) for _, s := range text { _, err = c.DrawString(s, pt) if err != nil { log.Println(err) return } pt.Y += c.PointToFixed(*size * *spacing) } pt1 := freetype.Pt(200, 100+int(c.PointToFixed(*size)>>6)) for _, s := range text1 { _, err = c.DrawString(s, pt1) if err != nil { log.Println(err) return } pt1.Y += c.PointToFixed(*size * *spacing) } pt2 := freetype.Pt(400, 70+int(c.PointToFixed(*size)>>6)) for _, s := range text2 { _, err = c.DrawString(s, pt2) if err != nil { log.Println(err) return } pt2.Y += c.PointToFixed(*size * *spacing) } // Save that RGBA image to disk. outFile, err := os.Create("out.png") if err != nil { log.Println(err) os.Exit(1) } defer outFile.Close() b := bufio.NewWriter(outFile) err = png.Encode(b, rgba) if err != nil { log.Println(err) os.Exit(1) } err = b.Flush() if err != nil { log.Println(err) os.Exit(1) } } func main() { //0 今日订单量 todayorders := "71车" //1 今日销售额 todaysoale := "4万元" //2 本月订单量 monthorders := "1777车" //3 本月客单价 mcp := "5.66万元" // 4 本月销售额 monthsoale := "20000万元" // 5 本月完成率 mcr := "95.35%" // 6 季度销售额 qsoale := "60000万元" // 7 季度完成率 qcr := "75.33%" // 8 年度销售额 ysoale := "180000万元" // 9 年度完成率 ycr := "35.33%" Repurchaserate := "28.57%" todayregistration := "13家" monthregistration := "153家" PV := "1261次" UV := "100个" time_date := "2018-06-28 15:35" var text = []string{ "今日" , "本月" , "季度" , "年度" , "流量 ", "注册量" , "复购率" + Repurchaserate, } var text1 = []string{ todaysoale, monthsoale, qsoale, ysoale, "PV"+PV, "今日"+todayregistration, "今日"+todayorders, } var text2 = []string{ time_date, "客单价" + mcp, "完成率" +mcr, "完成率" +qcr, "完成率" +ycr, "UV"+UV, "本月"+monthregistration, "本月"+monthorders, } Drawing(text,text1,text2) }
相关推荐
Go 图片绘制、合成设计
你可以看到在 Go 语言中处理图片的强大能力,特别是使用库结合其他相关库。这些操作(绘制、合成、旋转、压缩、裁剪)是图片处理中的常见需求,而 Go 语言提供的这些库使得这些任务变得简单且高效。
Golang绘制简单图形教程
在本教程中,我们将学习如何使用Go语言(Golang)来绘制简单的图形。函数绘制一个矩形,该函数接受四个参数:矩形的左上角X坐标、左上角Y坐标、矩形的宽度和高度。这只是一个简单的例子,你可以根据需要使用更多的函数和参数来绘制其他类型的图形。函数设置绘图颜色,这里我们将背景颜色设置为黑色,将绘图颜色设置为白色。首先,确保你已经正确安装了Go语言,并且配置了相应的环境变量。包,这是一个非常方便的2D绘图库,可以帮助我们轻松地绘制图形。的图片文件,该文件就是我们刚绘制的矩形图形。函数来绘制圆形,或者使用。
Golang性能调优(go-torch, go tool pprof)
Go语言已经为开发者内置配套了很多性能调优监控的好工具和方法,这大大提升了我们profile分析的效率。此外本文还将重点介绍和推荐uber开源的go-torch,其生成的火焰图更方便更直观的帮我们进行性能调优。我也是在实际一次的性能调优中,接触到go-torch,非常棒。
golang 绘图库_Golang 绘图技术(image/draw包介绍)
image/draw 包仅仅定义了一个操作:通过可选的蒙版图(mask image),把一个原始图片绘制到目标图片上,这个操作是出奇的灵活,可以优雅和高效的执行很多常见的图像处理任务。1: // Draw calls DrawMask with a nil mask.2: func Draw(dst Image, r image.Rectangle, src image.Image, sp ima...
golang中绘图库,图表,画图
golang中的第三方绘图库对比
25 The Go image/draw package go图片/描绘包:图片/描绘包的基本原理
The Go image/draw packagego图片/描绘包:图片/描绘包的基本原理 29 September 2011 Introduction Package image/drawdefines only one operation: drawing a source image onto a destination image, through an optional ...
【GoCN酷Go推荐】Golang 图片处理 — image 库
在开发中,有时会遇到对图片的处理需求,在 Python中, PIL/Pillow 库非常强大和易用。而 Golang 语言中,处理图片的标准库 image也可以实现一些基本操作。imag...
golang base64转image_Golang之图片处理
之前做项目有一个图片裁剪需求,没想到Golang标准库对图片处理的支持还挺强大的,在此记录一下,以备后用。在Golang里面图片处理主要依赖一个image库,支持常见的png、jpeg、gif等格式,使用这个库我们可以做生成图片、读取图片、裁剪图片等操作。这篇文章只介绍某几个常用的操作,详细API和使用的技巧大家可以参考Go官方文档和博客,比如:https://blog.golang.org/im...
golang中image包用法
image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述, image接口的值创建方式有如下几种: 1调用NewRGBA和NewPaletted 2解码一个包含gif.jpen或者png格式的image数据的io.Reader 首先介绍一些image接口 type Image //image是一
golang image: unknown format 错误解决
当使用image.Decode处理图片文件时,如报image: unknown format 错误。 示例 package main import ( "fmt" "image" "os" ) func main() { imagePath := "./mm.jpg" file, _ := os.Open(imagePath) defer file.Close() img, _, err := image.Decode(file) if err != nil { fmt.Print
【GoLang入门教程】Go语言几种标准库介绍(五)
上一篇,我们介绍了fmt、Go、html 三个库,这篇我们继续介绍剩下的库这里我们介绍了3个库image、io、math3个库, 下一篇我们将介绍其他的几种标准库😊🙏如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!
golang中image转base64
新入坑golang,要做个图形验证码,记录下获得image数据后怎么转成base64的格式
Golang标准库image包:图像处理完全指南
在Golang的生态中,image包是处理图像的“基础设施”。它无需额外依赖(仅需引入标准库),支持基本的图像读写、像素操作和格式编码(如JPEG、PNG)。本文将覆盖image包的核心功能,包括:图像的底层表示、颜色模型、坐标系统,以及如何通过代码实现图像的读取、修改和保存。本文将从“图像的本质”讲起,用“照片冲洗店”的故事类比image包的核心概念;接着通过代码示例演示如何操作图像像素;最后用一个“调整图片亮度”的实战项目,带你完整体验从读取到保存的全流程。像素(Pixel)
Golang实现图像单色处理:Go-ImageColorProcess
在当今数字化时代,图像处理已经成为信息处理的重要组成部分,尤其在提高视觉信息质量、增进用户体验和自动化领域中起着举足轻重的作用。Go语言(又称Golang)作为一门新兴的编程语言,其简洁性和强大的并发处理能力使其在图像处理领域中备受瞩目。本章将介绍Golang在图像处理方面的应用前景,为读者呈现一个图像处理的概览,并为后续章节中关于单色处理、灰度图像处理等更专业内容的深入分析做好铺垫。图像处理是通过一系列操作来改善图像质量,或从图像中提取有用信息的过程。
Go语言学习之image、image/color、image/png、image/jpeg包(the way to go)
生命不止,继续 go go go !!!golang同样为我们提供了很多关于图片处理的标准库,这里与大家一起学习分享。image package作用: Package image implements a basic 2-D image library. image包实现了一个基本的2D图像库.方法: func NewNRGBAfunc NewNRGBA(r Rectangle) *NRGBA
golang图片处理库image简介
go中处理图片的标准库image支持常见的PNG、JPEG、GIF等格式的图片处理(可读取、裁剪、绘制、生成等)。图片缩放分为保持比例与不保持比例的缩放;保持比例时,要确定新图片的位置(是否居中),以及如何填充空白处。DrawMask多了一个遮罩蒙层参数,Draw为其一种特殊形式(遮罩相关参数为nil)。读取的jpg图像不是RGBA格式的(为YCbCr格式);有了缩放后的大小后,即可通过双线性插值bilinear的方式进行图片的缩放。通过subImage方法可方便地裁剪图片(需要为RGBA格式的).....
go语言image、file、base64、buffer之间的互相转换
前言 本笔记只作为学习笔记,本次参考内容来自以下链接: https://studygolang.com/articles/2581 https://studygolang.com/pkgdoc https://zhuanlan.zhihu.com/p/339477329 image image包实现了一个基本的2D图像库,该包中包含基本的接口叫做image,这个里面包含color,这个将在image/color中描述, image接口的值创建方式有如下几种: 1调用NewRGBA和NewPaletted
go指南练习:图像image部分解析
最近刚开始自学Golang,非计算机专业出身,之前主要在写python(主要都是pandas…),上手golang有点磕磕绊绊。现在跟着指南一步一步在做练习,请多多指正。 练习内容 还记得之前编写的图片生成器 吗?我们再来编写另外一个,不过这次它将会返回一个 image.Image 的实现而非一个数据切片。 定义你自己的 Image 类型,实现必要的方法并调用 pic.ShowImage。 Bounds 应当返回一个 image.Rectangle ,例如 image.Rect(0, 0, w, h)。 C
go语言调用python_Golang 执行Python脚本
一、两种方式通过命令行的方式调用python脚本github.com/sbinet/go-python二、实现1、通过命令行的方式调用python脚本在golang对jpg图片dpi操作未提供原生的相关接口,只好依赖python脚本达到想要的目的main.pyfrom PIL import Image as ImagePIL, ImageFont, ImageDrawimport base64im...
1165




被折叠的 条评论
为什么被折叠?



