Heim >Backend-Entwicklung >Golang >Golang-Text zum Bild

Golang-Text zum Bild

PHPz
PHPzOriginal
2023-05-10 21:07:361451Durchsuche

In letzter Zeit verwenden immer mehr Websites und Anwendungen die Text-zu-Bild-Funktion, um die Privatsphäre der Benutzer zu schützen und die Sicherheit von Informationen zu gewährleisten. Daher ist es eine sehr wertvolle Fähigkeit, zu lernen, wie man mit Golang Text in Bilder umwandelt. In diesem Artikel erfahren Sie, wie Sie diese Funktionalität mit Golang in nur wenigen Codezeilen implementieren.

Zuerst müssen wir die folgenden Bibliotheken importieren:

import (
    "bytes"
    "image"
    "image/color"
    "image/draw"
    "image/png"
    "golang.org/x/image/font"
    "golang.org/x/image/font/basicfont"
    "golang.org/x/image/math/fixed"
)

Nach dem Import der erforderlichen Bibliotheken müssen wir eine Funktion namens GenerateTextImage() erstellen, um Parameter zu akzeptieren und das Bild zu generieren. Diese Funktion gibt ein Bild vom Typ []byte zurück. GenerateTextImage() 的函数以接受参数并生成图像。此函数将返回一个 []byte 类型的图像。

func GenerateTextImage(text string, width int, height int) []byte {
    // create a new image
    img := image.NewRGBA(image.Rect(0, 0, width, height))

    // set image background color to white
    white := color.RGBA{255, 255, 255, 255}
    draw.Draw(img, img.Bounds(), &image.Uniform{white}, image.ZP, draw.Src)

    // add text to image
    c := freetype.NewContext()
    c.SetDPI(72)
    c.SetFont(basicfont.NewDrawFont())
    c.SetFontSize(20)
    c.SetClip(img.Bounds())
    c.SetDst(img)
    c.SetSrc(image.Black)
    pt := freetype.Pt(10, 10+int(c.PointToFixed(20)>>6))
    _, err := c.DrawString(text, pt)
    if err != nil {
        fmt.Println(err)
    }

    // encode the image to png format and return the bytes
    var buff bytes.Buffer
    png.Encode(&buff, img)
    return buff.Bytes()
}

在上述代码块中,我们首先创建了一个空白的 RGBA 图像。我们还设置了图像背景的颜色,使其为白色。

接下来,我们添加文本到图像中。我们使用 freetype 字体库中的 NewContext() 函数创建一个新的上下文,并设置字体和字体大小。我们还指定要添加文本的窗口大小。然后,我们指定黑色作为字体的颜色,并在图像上指定文本位置。

最后,我们将图像编码为 PNG 格式,并将其返回为字节切片。

要调用此函数,您只需要传递要在图像中添加的文本、图像的宽度和高度即可。例如:

text := "Hello, World!"
width := 200
height := 50
imageBytes := GenerateTextImage(text, width, height)

在上述代码块中,我们将 "Hello, World!" 添加到图像中,设置图像的宽度为 200 像素,高度为 50 像素,并将生成的图像字节数组存储在 imageBytesrrreee

Im obigen Codeblock erstellen wir zunächst ein leeres RGBA-Bild. Außerdem stellen wir die Farbe des Bildhintergrundes so ein, dass dieser weiß ist.

Als nächstes fügen wir dem Bild Text hinzu. Wir verwenden die Funktion NewContext() aus der Freetype-Schriftbibliothek, um einen neuen Kontext zu erstellen und die Schriftart und -größe festzulegen. Wir geben auch die Fenstergröße an, zu der der Text hinzugefügt wird. Anschließend legen wir Schwarz als Schriftfarbe und die Textposition auf dem Bild fest. 🎜🎜Schließlich kodieren wir das Bild in das PNG-Format und geben es als Byte-Slice zurück. 🎜🎜Um diese Funktion aufzurufen, müssen Sie lediglich den Text, den Sie dem Bild hinzufügen möchten, sowie die Breite und Höhe des Bildes übergeben. Zum Beispiel: 🎜rrreee🎜Im obigen Codeblock fügen wir „Hello, World!“ zum Bild hinzu, legen die Breite des Bildes auf 200 Pixel und die Höhe auf 50 Pixel fest und speichern das resultierende Bild-Byte-Array in imageBytes-Variable. 🎜🎜Dies ist eine einfache Möglichkeit, mit Golang Text in Bilder umzuwandeln. Durch die Verwendung der Freetype-Bibliothek und der Bildpakete aus der Standardbibliothek können wir problemlos hochwertige Textbilder erstellen. 🎜

Das obige ist der detaillierte Inhalt vonGolang-Text zum Bild. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:C-Golang-TypkonvertierungNächster Artikel:C-Golang-Typkonvertierung