Maison > développement back-end > Golang > le corps du texte

Comment modifier la police dans Golang (étapes)

PHPz
Libérer: 2023-04-11 14:52:19
original
901 Les gens l'ont consulté

En tant que langage de programmation efficace, Golang est largement utilisé dans les applications réseau, les systèmes distribués, le cloud computing et d'autres domaines. Pendant le développement, les polices doivent souvent être modifiées pour améliorer l'interface utilisateur et l'expérience utilisateur du programme. Cet article explique comment utiliser Golang pour modifier les polices.

Première étape : installer les bibliothèques pertinentes

Pour modifier les polices dans Golang, vous devez utiliser les bibliothèques pertinentes. Par conséquent, ces bibliothèques doivent d’abord être installées. Ici, nous choisissons d'utiliser la bibliothèque go-freetype. Vous pouvez installer la bibliothèque go-freetype dans le terminal à l'aide de la commande suivante :

go get github.com/golang/freetype
Copier après la connexion

Étape 2 : Charger le fichier de police

Avant d'utiliser Golang pour modifier la police, vous devez charger le fichier de police. Vous pouvez y parvenir en utilisant le code suivant :

import (
    "github.com/golang/freetype"
    "github.com/golang/freetype/truetype"
    "io/ioutil"
    "log"
)

func loadFontFile(fontFilePath string) (*truetype.Font, error) {
    fontBytes, err := ioutil.ReadFile(fontFilePath)
    if err != nil {
        log.Printf("Failed to read font file: %v", err)
        return nil, err
    }

    font, err := freetype.ParseFont(fontBytes)
    if err != nil {
        log.Printf("Failed to parse font file: %v", err)
        return nil, err
    }

    return font, nil
}
Copier après la connexion

Dans le code ci-dessus, nous utilisons d'abord la fonction ioutil.ReadFile pour lire le contenu du fichier de police, puis utilisons la fonction freetype.ParseFont pour analyser le contenu du fichier de police et renvoyer une police. objet.

Étape 3 : Créer une structure liée à la police

Avant d'utiliser Golang pour modifier la police, vous devez créer une structure liée à la police. Vous pouvez créer ces structures en utilisant le code suivant :

type TextParams struct {
    Text string
    Size float64
    X    int
    Y    int
    Font *truetype.Font
}

type DrawText struct {
    Params []TextParams
}
Copier après la connexion

Dans le code ci-dessus, nous avons défini la structure TextParams pour stocker des informations telles que les informations textuelles, la taille du texte, la coordonnée X du texte et la coordonnée Y du texte. Nous définissons également la structure DrawText pour stocker les paramètres de tableau de plusieurs structures TextParams.

Étape 4 : Implémenter la fonction pour dessiner du texte

Avant d'utiliser Golang pour modifier la police, vous devez implémenter une fonction pour dessiner du texte. Vous pouvez y parvenir en utilisant le code suivant :

import (
    "image"
    "image/draw"
    "github.com/golang/freetype"
)

func (dt *DrawText) DrawToImage(img *image.RGBA) {
    ctx := freetype.NewContext()
    ctx.SetDPI(72)
    ctx.SetFont(dt.Params[0].Font)
    ctx.SetFontSize(dt.Params[0].Size)
    ctx.SetClip(img.Bounds())
    ctx.SetDst(img)
    ctx.SetSrc(image.Black)

    for _, param := range dt.Params {
        pt := freetype.Pt(param.X, param.Y)
        _, err := ctx.DrawString(param.Text, pt)
        if err != nil {
            log.Printf("Failed to draw text: %v", err)
            continue
        }
    }
}
Copier après la connexion

Dans le code ci-dessus, nous créons d'abord un objet Freetype Context. Définissez ensuite la police du texte, la taille de la police, l'image cible et la position de dessin du texte ainsi que d'autres informations. Enfin, utilisez une boucle pour dessiner plusieurs textes.

Étape 5 : Appeler la fonction pour dessiner la police

Après avoir terminé toutes les étapes ci-dessus, nous pouvons commencer à appeler la fonction pour dessiner la police. Vous pouvez appeler la fonction DrawToImage en utilisant le code suivant :

import (
    "image"
    "image/color"
)

func main() {
    // 加载字体文件
    font, err := loadFontFile("Ubuntu-Regular.ttf")
    if err != nil {
        log.Fatalf("Failed to load font file: %v", err)
    }

    // 创建画布
    img := image.NewRGBA(image.Rect(0, 0, 300, 100))
    draw.Draw(img, img.Bounds(), &image.Uniform{color.White}, image.ZP, draw.Src)

    dt := &DrawText{
        Params: []TextParams{
            {
                Text: "Hello Golang!",
                Size: 24,
                X:    50,
                Y:    50,
                Font: font,
            },
        },
    }

    dt.DrawToImage(img)

    // 显示画布
    displayedImage, _ := os.Create("out.png")
    defer displayedImage.Close()
    png.Encode(displayedImage, img)
}
Copier après la connexion

Dans le code ci-dessus, nous chargeons d'abord le fichier de police, créons un objet canevas et transmettons le paramètre tableau de la structure DrawText à la fonction DrawToImage. Enfin, utilisez la fonction png.Encode pour enregistrer le canevas en tant qu'image au format PNG.

Résumé

Cet article explique comment utiliser Golang pour modifier les polices. Vous pouvez utiliser la bibliothèque go-freetype pour charger des fichiers de polices, créer des structures liées aux polices, implémenter des fonctions pour dessiner du texte et enfin appeler la fonction pour dessiner des polices. En étudiant cet article, vous pouvez apprendre à utiliser Golang pour modifier les polices, améliorant ainsi l'interface utilisateur et l'expérience utilisateur du programme.

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