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!