[go] go 언어에서의 이미지 필터 효과

이번에는 Go 언어를 사용하여 이미지에 다양한 필터 효과를 적용하는 방법에 대해 알아보겠습니다. Go 언어는 간결하고 효율적인 언어로 이미지 처리와 관련된 작업을 수행하기에 적합한 도구들을 포함하고 있습니다. 이미지를 로드하여 다양한 필터 효과를 적용하는 과정을 통해 Go 언어의 강력함을 경험해보겠습니다.

필요한 패키지 가져오기

Go 언어에서 이미지 처리를 위해서는 imageimage/png 등의 패키지를 가져와야 합니다. 아래는 이미지와 필터 효과를 처리하기 위한 패키지들을 가져오는 Go 코드의 예시입니다.

import (
    "image"
    _ "image/jpeg"
    "image/png"
    "os"
)

이미지 로드하기

이미지를 로드하기 위해서는 os.Open 함수로 이미지 파일을 열고, image.Decode 함수로 이미지를 디코딩해야 합니다. 아래 코드는 이미지를 로드하는 과정을 보여줍니다.

func loadImage(filename string) (image.Image, error) {
    file, err := os.Open(filename)
    if err != nil {
        return nil, err
    }
    defer file.Close()

    img, _, err := image.Decode(file)
    if err != nil {
        return nil, err
    }

    return img, nil
}

이미지에 필터 효과 적용하기

로드한 이미지에 필터 효과를 적용하기 위해서는 image 패키지에서 제공하는 다양한 함수들을 사용할 수 있습니다. 예를 들어, 이미지를 회전시키거나 흑백으로 변환하는 등의 효과를 적용할 수 있습니다.

아래는 이미지에 흑백 필터를 적용하는 예시 코드입니다.

func applyGrayscaleFilter(img image.Image) image.Image {
    bounds := img.Bounds()
    result := image.NewGray(bounds)

    for y := bounds.Min.Y; y < bounds.Max.Y; y++ {
        for x := bounds.Min.X; x < bounds.Max.X; x++ {
            pixel := img.At(x, y)
            grayColor := color.GrayModel.Convert(pixel)
            result.SetGray(x, y, grayColor.(color.Gray))
        }
    }

    return result
}

결과 이미지 저장하기

필터 효과를 적용한 결과 이미지를 저장하기 위해서는 image/png 패키지의 함수를 사용하여 이미지를 파일로 저장할 수 있습니다. 아래는 필터 효과가 적용된 이미지를 저장하는 코드의 예시입니다.

func saveImage(filename string, img image.Image) error {
    file, err := os.Create(filename)
    if err != nil {
        return err
    }
    defer file.Close()

    err = png.Encode(file, img)
    if err != nil {
        return err
    }

    return nil
}

위의 예시 코드들을 사용하여 이미지를 로드하고 효과를 적용한 뒤에 저장해 보세요. Go 언어를 사용하여 이미지 처리를 할 때의 즐거움과 효율성을 경험할 수 있을 것입니다.

이상으로 Go 언어에서의 이미지 필터 효과에 대해 알아본 내용을 마치도록 하겠습니다. 감사합니다.

[참고 자료]