Home > Article > Backend Development > How to colorize and tone-separate images using Golang
How to use Golang to color process and tone separate images
Abstract: This article will introduce how to use the Golang programming language to color process and tone separate images. We will use the image processing library in Golang to implement these functions and demonstrate the specific implementation process through code examples.
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) }
In the above code, we first open a file named input through the Open function of the os package. jpg picture file. Then use the Decode function of the jpeg package to decode the image and obtain an image.Image object. Next, we create a new grayscale image using the NewGray function of the image package. Then use a double loop to traverse the pixels of the original image, calculate the corresponding grayscale value through the color value of the pixel, and set it as the pixel value of the new grayscale image. Finally, use the Encode function of the jpeg package to save the grayscale image to the output.jpg file.
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) }
In the above code, we use the RGBA function of the image/color package to separate the pixel color values of the original image out and create a new color picture. Then, by traversing the pixels of the original picture, the R, G, and B color values of each pixel are separated, and the values of G and B are set to 0, thus realizing the hue separation operation of the picture. Finally, use the Encode function of the jpeg package to save the separated image to the output.jpg file.
The above is the detailed content of How to colorize and tone-separate images using Golang. For more information, please follow other related articles on the PHP Chinese website!