Home  >  Article  >  Backend Development  >  How to colorize and tone-separate images using Golang

How to colorize and tone-separate images using Golang

PHPz
PHPzOriginal
2023-08-21 18:49:451277browse

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.

  1. Introduction
    In modern image processing applications, color processing and tone separation of images are common requirements. Color processing can make the color of the picture more vivid and vivid, while tone separation can separate the colors in the picture, making the picture look more artistic. As a high-performance, concise programming language, Golang provides a rich image processing library that can be used to implement these functions.
  2. Use Golang to color process pictures
    Color processing refers to changing the color of the picture, thereby changing the overall tone of the picture. In Golang, you can use the image package to perform image processing operations. The following is a simple sample code that demonstrates how to use Golang to grayscale an image:
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.

  1. Use Golang to tone-separate pictures
    Tone-separation refers to separating the colors in the picture to form an artistic effect. In Golang, hue separation can be achieved using the color conversion function of the image/color package. The following is a sample code that demonstrates how to use Golang to tone separate an image:
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.

  1. Conclusion
    This article introduces how to use Golang to color process and tone separate images. By using the image processing library in Golang, we can easily implement these functions, and the code is concise and efficient. Readers can further extend and optimize these sample codes according to their own needs to implement more complex image processing operations.

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn