golang テキストを画像に変換

PHPz
リリース: 2023-05-10 21:07:36
オリジナル
1417 人が閲覧しました

最近、ユーザーのプライバシーを保護し、情報のセキュリティを確保するために、テキストから画像への変換機能を使用する Web サイトやアプリケーションが増えています。したがって、Golang を使用してテキストを画像に変換する方法を学ぶことは、非常に価値のあるスキルです。この記事では、Golang を使用してわずか数行のコードでこの機能を実装する方法を説明します。

まず、次のライブラリをインポートする必要があります:

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"
)
ログイン後にコピー

必要なライブラリをインポートした後、パラメータを受け入れて生成するための 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 ピクセルに設定し、結果の画像バイトを保存します。 imageBytes 変数の配列。

これは、Golang を使用してテキストを画像に変換する簡単な方法です。 FreeType ライブラリと標準ライブラリの画像パッケージを使用することで、高品質なテキスト画像を簡単に作成できます。

以上がgolang テキストを画像に変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート