Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Manipulasi imej Golang: cara melaraskan kecerahan dan kontras

Manipulasi imej Golang: cara melaraskan kecerahan dan kontras

王林
王林asal
2023-08-19 16:53:111336semak imbas

Manipulasi imej Golang: cara melaraskan kecerahan dan kontras

Manipulasi Imej Golang: Cara Melaraskan Kecerahan dan Kontras

Pengenalan:
Dalam pemprosesan imej, melaraskan kecerahan dan kontras imej adalah tugas yang sangat biasa. Dengan melaraskan kecerahan kita boleh menjadikan imej lebih cerah atau lebih gelap. Dan dengan melaraskan kontras, kita boleh menambah atau mengurangkan perbezaan warna dalam imej. Artikel ini akan memperkenalkan cara menggunakan Golang untuk melaraskan kecerahan dan kontras imej dan memberikan contoh kod.

  1. Import pakej yang diperlukan
    Pertama, kita perlu mengimport imej dan pakej warna, yang digunakan untuk mengendalikan pembacaan dan penyimpanan imej, serta penukaran ruang warna.
import (
    "image"
    "image/color"
    _ "image/jpeg"
    _ "image/png"
    "os"
)
  1. Baca fail imej
    Seterusnya, kita perlu melaksanakan fungsi yang membaca fail imej dan mengembalikan imej.Objek imej.
func loadImage(path string) (image.Image, error) {
    file, err := os.Open(path)
    if err != nil {
        return nil, err
    }
    defer file.Close()

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

    return img, nil
}
  1. Laraskan Kecerahan
    Kecerahan ialah tahap keamatan atau kecerahan piksel imej. Dengan melaraskan komponen RGB setiap piksel, kita boleh menambah atau mengurangkan kecerahan imej. Di bawah ialah contoh fungsi untuk melaraskan kecerahan imej.
func adjustBrightness(img image.Image, level int) image.Image {
    bounds := img.Bounds()
    dest := image.NewRGBA(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)
            r, g, b, a := oldColor.RGBA()

            r = uint32((int(r) * level) / 100)
            g = uint32((int(g) * level) / 100)
            b = uint32((int(b) * level) / 100)

            newColor := color.RGBA64{uint16(r), uint16(g), uint16(b), uint16(a)}

            dest.Set(x, y, newColor)
        }
    }

    return dest
}

Dalam kod di atas, kami menggunakan gelung untuk melelaran melalui setiap piksel dalam imej dan melaraskan komponen RGB setiap piksel mengikut tahap kecerahan yang diberikan.

  1. Laraskan Kontras
    Kontras menentukan tahap perbezaan antara warna berbeza dalam imej. Dengan melaraskan komponen RGB bagi setiap piksel, kita boleh menambah atau mengurangkan kontras imej. Di bawah ialah contoh fungsi untuk melaraskan kontras imej.
func adjustContrast(img image.Image, level int) image.Image {
    bounds := img.Bounds()
    dest := image.NewRGBA(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)
            r, g, b, a := oldColor.RGBA()

            r = uint32(128 + (int(r)-128)*level/100)
            g = uint32(128 + (int(g)-128)*level/100)
            b = uint32(128 + (int(b)-128)*level/100)

            newColor := color.RGBA64{uint16(r), uint16(g), uint16(b), uint16(a)}

            dest.Set(x, y, newColor)
        }
    }

    return dest
}

Dalam kod di atas, kami menggunakan gelung untuk melelaran melalui setiap piksel dalam imej dan melaraskan komponen RGB bagi setiap piksel mengikut tahap kontras yang diberikan.

  1. Contoh
    Akhir sekali, kita boleh menggunakan fungsi di atas untuk melaraskan kecerahan dan kontras imej.
func main() {
    img, err := loadImage("input.jpg")
    if err != nil {
        fmt.Println("Failed to load image:", err)
        return
    }

    brightImg := adjustBrightness(img, 150)
    contrastImg := adjustContrast(img, 200)

    saveImage(brightImg, "bright_output.jpg")
    saveImage(contrastImg, "contrast_output.jpg")
}

Dalam kod di atas, kami mula-mula menggunakan fungsi loadImage untuk memuatkan imej input, dan kemudian memanggil fungsi adjustBrightness dan adjustContrast masing-masing untuk melaraskan kecerahan dan kontras imej. Akhir sekali, kami menggunakan fungsi saveImage untuk menyimpan imej yang dilaraskan ke fail.

Ringkasan:
Artikel ini memperkenalkan cara menggunakan Golang untuk melaraskan kecerahan dan kontras imej serta menyediakan contoh kod yang sepadan. Dengan melaraskan kecerahan dan kontras, kami boleh meningkatkan kesan visual imej dan menggunakan lebih banyak teknik dalam pemprosesan imej. Dengan menggunakan pustaka pemprosesan imej Golang, kami boleh melaksanakan tugasan ini dengan mudah dan menggunakannya dalam projek kami sendiri.

Atas ialah kandungan terperinci Manipulasi imej Golang: cara melaraskan kecerahan dan kontras. 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