给定image.RGBA,坐标和一行文字,如何添加一个简单的标签与任何普通的固定字体?例如Face7x13来自font/basicfont.
package main
import (
"image"
"image/color"
"image/png"
"os"
)
func main() {
img := image.NewRGBA(image.Rect(0, 0, 320, 240))
x, y := 100, 100
addLabel(img, x, y, "Test123")
png.Encode(os.Stdout, img)
}
func addLabel(img *image.RGBA, x, y int, label string) {
col := color.Black
// now what?
}
Run Code Online (Sandbox Code Playgroud)
对齐并不重要,但最好是我可以将标签写在从坐标开始的线上方.
我想避免像字体这样的外部可加载依赖项.
我想打开jpeg图像文件,对其进行编码,更改一些像素颜色,然后将其保存原样.
我想做这样的事情
imgfile, err := os.Open("unchanged.jpeg")
defer imgfile.Close()
if err != nil {
fmt.Println(err.Error())
}
img,err := jpeg.Decode(imgfile)
if err != nil {
fmt.Println(err.Error())
}
img.Set(0, 0, color.RGBA{85, 165, 34, 1})
img.Set(1,0,....)
outFile, _ := os.Create("changed.jpeg")
defer outFile.Close()
jpeg.Encode(outFile, img, nil)
Run Code Online (Sandbox Code Playgroud)
我只是无法想出一个有效的解决方案,因为我在编码图像文件后得到的默认图像类型没有Set方法.
任何人都可以解释如何做到这一点?非常感谢.
代码的目标是下载图像,将其粘贴到更大的父图像并保存结果。
经过多次失败后,我最终得到了以下有效的代码。
但是,有没有比使用bytes.Buffer和 awriter将目标图像保存到文件/将其传递给 httpResponse更好的方法?
package main
import (
"image"
"image/draw"
"image/jpeg"
"os"
// "image/color"
// "io/ioutil"
// "fmt"
"bufio"
"bytes"
"log"
"net/http"
)
func main() {
// Fetch an image.
resp, err := http.Get("http://katiebrookekennels.com/wp-content/uploads/2014/10/dog-bone4.jpg")
if err != nil {
log.Panic(err)
}
defer resp.Body.Close()
// Keep an in memory copy.
myImage, err := jpeg.Decode(resp.Body)
if err != nil {
log.Panic(err)
}
// Prepare parent image where we want to position child image.
target := image.NewRGBA(image.Rect(0, 0, …Run Code Online (Sandbox Code Playgroud) 我尝试使用以下代码将base64 png图像写入文件:
imageReader := base64.NewDecoder(base64.StdEncoding, strings.NewReader(Images[i]))
pngImage, _, err := image.Decode(imageReader)
if err != nil {
beego.Error(err)
}
bounds := pngImage.Bounds()
if imgFile, err = os.Create(fileName + ".png"); err != nil {
return Data{}
}
defer imgFile.Close()
_, err = imgFile.Write([]byte(pngImage))
Run Code Online (Sandbox Code Playgroud)
界限还可以.最后一行的错误消息是
无法将pngImage(type image.Image)转换为type [] byte
显然,因为image.Image不是byte [].但是我该如何转换呢?或者甚至有一个更简单的版本来做到这一点.
我环顾四周,但找不到任何对在 golang 中绘制圆圈有用的东西。我想绘制一个具有 2 个给定(内部和外部)半径的绘图,并为它们之间的所有像素着色。
一种可能的方法是遍历每个像素并为其着色,直到创建环。虽然,这似乎非常低效。
对此的任何帮助将不胜感激!:)