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.
import ( "image" "image/color" _ "image/jpeg" _ "image/png" "os" )
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 }
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.
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.
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!