Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk menukar gambar kepada kesan hitam putih dan halftone menggunakan Golang

Bagaimana untuk menukar gambar kepada kesan hitam putih dan halftone menggunakan Golang

王林
王林asal
2023-08-18 16:06:171109semak imbas

Bagaimana untuk menukar gambar kepada kesan hitam putih dan halftone menggunakan Golang

Cara menukar gambar kepada kesan hitam putih dan halftone menggunakan Golang

Dengan perkembangan teknologi yang berterusan, pemprosesan imej telah menjadi bidang yang semakin penting. Dalam pemprosesan imej, menukar gambar berwarna kepada kesan hitam putih atau halftone adalah operasi biasa. Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan Golang untuk menukar gambar kepada kesan hitam putih dan halftone.

Pertama, kita perlu mengimport pakej yang diperlukan. Di Golang, anda boleh menggunakan pakej imej dan imej/warna untuk melaksanakan operasi pemprosesan imej. Kodnya adalah seperti berikut:

package main

import (
    "image"
    "image/color"
    "image/jpeg"
    "log"
    "os"
)

Seterusnya, kita boleh menentukan fungsi untuk membaca fail imej. Kodnya adalah seperti berikut:

func loadImage(filename string) (image.Image, error) {
    file, err := os.Open(filename)
    if err != nil {
        return nil, err
    }
    defer file.Close()

    img, err := jpeg.Decode(file)
    if err != nil {
        return nil, err
    }

    return img, nil
}

Kemudian, kita boleh menentukan fungsi untuk menukar gambar berwarna kepada kesan hitam dan putih. Ini boleh dicapai dengan memproses setiap piksel imej. Kodnya adalah seperti berikut:

func toGrayscale(img image.Image) *image.Gray {
    bounds := img.Bounds()
    gray := image.NewGray(bounds)

    for y := bounds.Min.Y; y < bounds.Max.Y; y++ {
        for x := bounds.Min.X; x < bounds.Max.X; x++ {
            oldColor := img.At(x, y)
            grayColor := color.GrayModel.Convert(oldColor)
            gray.Set(x, y, grayColor)
        }
    }

    return gray
}

Seterusnya, kita boleh mentakrifkan fungsi untuk menukar gambar berwarna kepada kesan halftone. Kesan halftone boleh dicapai dengan memproses setiap piksel imej dan menukarkannya kepada set nilai warna yang terhad. Kodnya adalah seperti berikut:

func toHalftone(img image.Image) *image.Gray16 {
    bounds := img.Bounds()
    halftone := image.NewGray16(bounds)

    for y := bounds.Min.Y; y < bounds.Max.Y; y++ {
        for x := bounds.Min.X; x < bounds.Max.X; x++ {
            oldColor := img.At(x, y)
            halftoneColor := color.Gray16Model.Convert(oldColor)
            halftone.Set(x, y, halftoneColor)
        }
    }

    return halftone
}

Akhir sekali, kita boleh menentukan fungsi untuk menyimpan imej yang ditukar. Kodnya adalah seperti berikut:

func saveImage(img image.Image, filename string) error {
    file, err := os.Create(filename)
    if err != nil {
        return err
    }
    defer file.Close()

    err = jpeg.Encode(file, img, nil)
    if err != nil {
        return err
    }

    return nil
}

Sekarang, kita boleh menulis fungsi utama untuk memanggil fungsi di atas dan mengujinya. Kodnya adalah seperti berikut:

func main() {
    // 读取图片文件
    img, err := loadImage("input.jpg")
    if err != nil {
        log.Fatal(err)
    }

    // 转换为黑白效果
    gray := toGrayscale(img)
    err = saveImage(gray, "output_gray.jpg")
    if err != nil {
        log.Fatal(err)
    }

    // 转换为半色调效果
    halftone := toHalftone(img)
    err = saveImage(halftone, "output_halftone.jpg")
    if err != nil {
        log.Fatal(err)
    }

    log.Println("图片转换完成")
}

Dengan menjalankan kod di atas, kami boleh menukar fail imej input kepada kesan hitam putih dan halftone, dan menyimpannya sebagai fail output_gray.jpg dan output_halftone.jpg.

Di atas adalah cara menggunakan Golang untuk menukar gambar kepada kesan hitam putih dan halftone. Dengan contoh kod mudah ini, kami boleh melaksanakan fungsi pemprosesan imej dengan mudah di Golang. Semoga artikel ini dapat membantu anda!

Atas ialah kandungan terperinci Bagaimana untuk menukar gambar kepada kesan hitam putih dan halftone menggunakan Golang. 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

Artikel berkaitan

Lihat lagi