Maison > développement back-end > Golang > texte golang en image

texte golang en image

PHPz
Libérer: 2023-05-10 21:07:36
original
1445 Les gens l'ont consulté

Récemment, de plus en plus de sites Web et d'applications ont commencé à utiliser la fonction de conversion texte-image pour protéger la vie privée des utilisateurs et assurer la sécurité des informations. Par conséquent, apprendre à convertir du texte en images à l’aide de Golang est une compétence très précieuse. Cet article vous montrera comment implémenter cette fonctionnalité en quelques lignes de code à l'aide de Golang.

Tout d'abord, nous devons importer les bibliothèques suivantes :

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"
)
Copier après la connexion

Après avoir importé les bibliothèques requises, nous devons créer une fonction appelée GenerateTextImage() pour accepter les paramètres et générer l'image. Cette fonction renverra une image de type []byte. 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()
}
Copier après la connexion

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

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

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

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

text := "Hello, World!"
width := 200
height := 50
imageBytes := GenerateTextImage(text, width, height)
Copier après la connexion

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

Dans le bloc de code ci-dessus, nous créons d'abord une image RGBA vierge. Nous définissons également la couleur de l’arrière-plan de l’image pour qu’elle soit blanche.

Ensuite, nous ajoutons du texte à l'image. Nous utilisons la fonction NewContext() de la bibliothèque de polices freetype pour créer un nouveau contexte et définir la police et la taille de la police. Nous précisons également la taille de la fenêtre à laquelle le texte sera ajouté. Nous spécifions ensuite le noir comme couleur de police et la position du texte sur l'image. 🎜🎜Enfin, nous encodons l'image au format PNG et la renvoyons sous forme de tranche d'octets. 🎜🎜Pour appeler cette fonction, il vous suffit de transmettre le texte que vous souhaitez ajouter dans l'image, la largeur et la hauteur de l'image. Par exemple : 🎜rrreee🎜Dans le bloc de code ci-dessus, nous ajoutons "Hello, World!" à l'image, définissons la largeur de l'image sur 200 pixels et la hauteur sur 50 pixels, et stockons le tableau d'octets de l'image résultant dans variable imageBytes. 🎜🎜C'est un moyen simple de convertir du texte en image à l'aide de Golang. En utilisant la bibliothèque freetype et les packages d'images de la bibliothèque standard, nous pouvons facilement créer des images texte de haute qualité. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal