Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pemprosesan Imej Golang: Ketahui Cara Menambah Tera Air dan Teks

Pemprosesan Imej Golang: Ketahui Cara Menambah Tera Air dan Teks

WBOY
WBOYasal
2023-08-17 08:41:081898semak imbas

Pemprosesan Imej Golang: Ketahui Cara Menambah Tera Air dan Teks

Pemprosesan Imej Golang: Ketahui cara menambah tera air dan teks

Pengenalan:
Dalam era moden pendigitalan dan media sosial, pemprosesan imej telah menjadi kemahiran penting. Sama ada untuk kegunaan peribadi atau operasi perniagaan, menambah tera air dan teks adalah keperluan biasa. Dalam artikel ini, kami akan meneroka cara menggunakan Golang untuk pemprosesan imej dan mempelajari cara menambah tera air dan teks.

Latar Belakang:
Golang ialah bahasa pengaturcaraan sumber terbuka yang terkenal dengan sintaksnya yang ringkas, prestasi cekap dan keupayaan serentak yang berkuasa. Ia telah menjadi salah satu bahasa pilihan bagi banyak pembangun. Di Golang, terdapat beberapa perpustakaan pihak ketiga yang berkuasa yang menjadikan pemprosesan imej mudah dan cekap.

Tambah Tera Air:
Menambah tera air ialah teknik biasa untuk melindungi hak cipta imej peribadi atau komersial. Berikut ialah contoh yang menunjukkan cara menambah tera air pada imej menggunakan Golang:

package main

import (
    "image"
    "image/draw"
    "image/jpeg"
    "os"
)

func main() {
    // 打开原始图片
    file, err := os.Open("original.jpg")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    // 解码图片
    img, _, err := image.Decode(file)
    if err != nil {
        panic(err)
    }

    // 创建一个画布
    bounds := img.Bounds()
    canvas := image.NewRGBA(bounds)

    // 绘制原始图片到画布上
    draw.Draw(canvas, bounds, img, image.Point{}, draw.Src)

    // 添加水印
    watermark := image.NewRGBA(image.Rect(0, 0, 100, 50))
    draw.Draw(canvas, image.Rect(bounds.Dx()-100, bounds.Dy()-50, bounds.Dx(), bounds.Dy()), watermark, image.Point{}, draw.Src)

    // 保存处理后的图片
    output, err := os.Create("output.jpg")
    if err != nil {
        panic(err)
    }
    defer output.Close()

    // 编码保存到文件
    jpeg.Encode(output, canvas, nil)
}

Kod di atas mula-mula membuka fail imej bernama "original.jpg". Ia kemudian dinyahkodkan menjadi objek image.Image, kanvas RGBA baharu dicipta dan imej asal dilukis pada kanvas. Akhirnya, tera air bersaiz 100x50 telah dibuat dan dilukis ke sudut kanan bawah kanvas. Imej hasil akhir dengan tera air disimpan sebagai "output.jpg".

Tambah teks:
Menambah teks ialah satu lagi keperluan pemprosesan imej biasa, ia boleh digunakan untuk menambah tajuk, penerangan atau arahan lain. Berikut ialah contoh yang menunjukkan cara menambah teks pada imej menggunakan Golang:

package main

import (
    "image"
    "image/draw"
    "image/jpeg"
    "os"
    "github.com/golang/freetype"
    "github.com/golang/freetype/truetype"
    "golang.org/x/image/font"
)

func main() {
    // 打开原始图片
    file, err := os.Open("original.jpg")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    // 解码图片
    img, _, err := image.Decode(file)
    if err != nil {
        panic(err)
    }

    // 创建一个画布
    bounds := img.Bounds()
    canvas := image.NewRGBA(bounds)

    // 绘制原始图片到画布上
    draw.Draw(canvas, bounds, img, image.Point{}, draw.Src)

    // 添加文字
    fontBytes, err := os.ReadFile("font.ttf")
    if err != nil {
        panic(err)
    }
    font, err := freetype.ParseFont(fontBytes)
    if err != nil {
        panic(err)
    }

    context := freetype.NewContext()
    context.SetDPI(72)
    context.SetFont(font)
    context.SetFontSize(24)
    context.SetClip(bounds)
    context.SetDst(canvas)
    context.SetSrc(image.Black)

    pt := freetype.Pt(10, 10+int(context.PointToFixed(24)>>6))
    context.DrawString("Hello, Golang!", pt)

    // 保存处理后的图片
    output, err := os.Create("output.jpg")
    if err != nil {
        panic(err)
    }
    defer output.Close()

    // 编码保存到文件
    jpeg.Encode(output, canvas, nil)
}

Kod di atas adalah serupa dengan contoh menambah tera air, tetapi kami menggunakan jenis bebas perpustakaan pihak ketiga untuk menambah teks. Mula-mula, fail imej bernama "original.jpg" dibuka dan kemudian dinyahkodkan menjadi imej. Objek imej. Kemudian kanvas RGBA baharu dicipta dan imej asal dilukis pada kanvas. Kemudian, fail fon TrueType dimuatkan dan dihuraikan ke dalam objek freetype.Font. Mencipta objek freetype.Context dan menetapkan parameter lukisan seperti fon dan saiz fon. Akhir sekali, fungsi DrawString dipanggil untuk menambah teks pada kanvas. Imej hasil akhir disimpan sebagai "output.jpg".

Kesimpulan:
Golang, sebagai bahasa pengaturcaraan yang berkuasa, mempunyai banyak perpustakaan dan alatan pihak ketiga, menjadikan pemprosesan imej mudah dan cekap. Artikel ini memperkenalkan cara menggunakan Golang untuk menambah tera air dan teks pada imej dan menyediakan contoh kod yang sepadan. Saya harap artikel ini dapat membantu pembaca mempelajari cara menggunakan Golang untuk pemprosesan imej dan memainkan peranan dalam aplikasi praktikal.

Atas ialah kandungan terperinci Pemprosesan Imej Golang: Ketahui Cara Menambah Tera Air dan Teks. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn