🔥 연습문제 - 슬라이스로 그레이스케일 이미지 만들기
237자
3분
Go 언어에서는 슬라이스를 활용해 그레이스케일 이미지를 쉽게 만들 수 있습니다. 이번 예제에서는 Pic
함수를 구현하여 슬라이스를 이용해 그레이스케일 이미지를 생성해 보겠습니다.
Pic
함수는 dx
와 dy
라는 두 개의 정수 매개변수를 받습니다. 이 함수는 dy
길이의 슬라이스를 반환하는데, 각 요소는 dx
길이의 8비트 부호 없는 정수 슬라이스입니다. 프로그램을 실행하면 Pic
함수가 반환한 슬라이스를 이용해 그레이스케일(정확히는 블루스케일) 값으로 해석하여 이미지를 표시합니다.
이미지의 선택은 여러분에게 달려 있습니다. 흥미로운 함수로는 (x+y)/2
, x*y
, x^y
등이 있습니다.
[][]uint8
안에 각 []uint8
을 할당하려면 반복문을 사용해야 합니다.
타입 변환을 위해서는 uint8(intValue)
를 사용하면 됩니다.
아래는 Pic
함수를 구현한 예제 코드입니다:
package main import "golang.org/x/tour/pic" func Pic(dx, dy int) [][]uint8 { // 바깥 슬라이스 생성 picture := make([][]uint8, dy) // 안쪽 슬라이스를 바깥 슬라이스의 각 요소에 할당 for y := range picture { picture[y] = make([]uint8, dx) // 각 픽셀의 값 계산 for x := range picture[y] { picture[y][x] = uint8((x+y)/2) // (x+y)/2 함수 사용 } } return picture } func main() { pic.Show(Pic) }
go
위 코드에서는 먼저 make
함수를 사용하여 dy
길이의 바깥 슬라이스인 picture
를 생성합니다. 그리고 for
반복문을 사용하여 picture
의 각 요소에 dx
길이의 안쪽 슬라이스를 할당합니다.
이중 for
반복문을 사용하여 각 픽셀의 값을 계산합니다. 여기서는 (x+y)/2
함수를 사용하여 그레이스케일 값을 계산하였습니다. 계산된 값은 uint8
타입으로 변환하여 해당 픽셀에 할당됩니다.
마지막으로 완성된 picture
슬라이스를 반환하면, main
함수에서 pic.Show
함수를 호출하여 생성된 이미지를 표시할 수 있습니다.
- (x + y) / 2
- x * y
- x ^ y