Cara menggunakan Golang untuk mewarna dan mengasingkan gambar
Abstrak: Artikel ini akan memperkenalkan cara menggunakan bahasa pengaturcaraan Golang untuk mewarnakan proses dan tona gambar yang berasingan. Kami akan menggunakan perpustakaan pemprosesan imej di Golang untuk melaksanakan fungsi ini dan menunjukkan proses pelaksanaan khusus melalui contoh kod.
package main import ( "image" "image/color" "image/jpeg" "log" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.jpg") if err != nil { log.Fatal(err) } defer file.Close() // 解码图片 img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } // 创建一个新的灰度化图片 grayImg := image.NewGray(img.Bounds()) // 遍历图片像素,将每个像素灰度化 for x := 0; x < img.Bounds().Max.X; x++ { for y := 0; y < img.Bounds().Max.Y; y++ { c := img.At(x, y) gray := color.GrayModel.Convert(c) grayImg.Set(x, y, gray) } } // 保存灰度化后的图片 outFile, err := os.Create("output.jpg") if err != nil { log.Fatal(err) } defer outFile.Close() jpeg.Encode(outFile, grayImg, nil) }
Dalam kod di atas, kami mula-mula membuka fail imej bernama input.jpg melalui fungsi Buka pakej os. Kemudian gunakan fungsi Nyahkod pakej jpeg untuk menyahkod imej dan mendapatkan imej. Objek imej. Seterusnya, kami mencipta imej skala kelabu baharu menggunakan fungsi NewGray bagi pakej imej. Kemudian gunakan gelung berganda untuk melintasi piksel imej asal, kira nilai skala kelabu yang sepadan melalui nilai warna piksel dan tetapkannya sebagai nilai piksel imej skala kelabu baharu. Akhir sekali, gunakan fungsi Encode pakej jpeg untuk menyimpan imej skala kelabu ke fail output.jpg.
package main import ( "image" "image/color" "image/jpeg" "log" "os" ) func main() { // 打开图片文件 file, err := os.Open("input.jpg") if err != nil { log.Fatal(err) } defer file.Close() // 解码图片 img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } // 创建一个新的彩色图片 colorImg := image.NewRGBA(img.Bounds()) // 遍历图片像素,将每个像素的R、G、B颜色值分离出来 for x := 0; x < img.Bounds().Max.X; x++ { for y := 0; y < img.Bounds().Max.Y; y++ { c := img.At(x, y) r, g, b, _ := c.RGBA() colorImg.Set(x, y, color.RGBA{R: uint8(r), G: 0, B: 0}) } } // 保存分离后的图片 outFile, err := os.Create("output.jpg") if err != nil { log.Fatal(err) } defer outFile.Close() jpeg.Encode(outFile, colorImg, nil) }
Dalam kod di atas, kami menggunakan fungsi RGBA bagi pakej imej/warna untuk memisahkan nilai warna piksel imej asal dan mencipta a Gambar warna baru. Kemudian, dengan melintasi piksel gambar asal, nilai warna R, G, dan B setiap piksel dipisahkan, dan nilai G dan B ditetapkan kepada 0, dengan itu merealisasikan operasi pemisahan warna bagi gambar. Akhir sekali, gunakan fungsi Encode pakej jpeg untuk menyimpan imej yang dipisahkan ke fail output.jpg.
Atas ialah kandungan terperinci Cara mewarnakan dan mewarnakan imej berasingan menggunakan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!