[Go] fogleman의 Go Graphics 라이브러리

Go는 그 목적이 시스템 및 서버 프로그래밍에 있음으로 그리기(Draw) API는 지원하지 않는다. 그러나 Go 언어에는 이러한 부족한 부분을 채워줄 매우 많은 그래픽 라이브러리 존재하는데, 그 중에 하나가 fogleman이 개발한 Go Graphic 라이브러(https://github.com/fogleman/gg)이다.

아래의 코드는 이 라이브러리를 이용해 필자가 작성한 테스트 코드이다. (사실 이글은 Go 마스터하기 라는 책을 다 보고, 다시 한번 더 볼 요량으로 파일을 정리하던 중에 코드를 이 블로그에 저장하기 위한 목적을 갖는다.)

package main

import "github.com/fogleman/gg"

func main() {
	const S = 256

	dc := gg.NewContext(S, S)

	dc.SetRGB(1, 1, 1)
	dc.Clear()

	if err := dc.LoadFontFace("font.ttf", 36); err != nil {
		panic(err)
	}

	dc.SetRGB(0, 0, 0)

	s := "한글ABC"
	n := 3 // "stroke" size

	for dy := -n; dy <= n; dy++ {
		for dx := -n; dx <= n; dx++ {
			if dx*dx+dy*dy >= n*n {
				// give it rounded corners
				continue
			}
			x := S/2 + float64(dx)
			y := S/2 + float64(dy)
			dc.DrawStringAnchored(s, x, y, 0.5, 0.5)
		}
	}
	dc.SetRGB(1, 1, 0)
	dc.DrawStringAnchored(s, S/2, S/2, 0.5, 0.5)

	dc.SavePNG("out.png")
}

결과는 아래와 같은 out.png 파일을 생성한다는 것이다. 파일로 생성하는 것은 필자의 목적에 맞기 때문인데, 이렇게 생성한 이미지를 네트워크를 타고 클라이언트에 전송되는 것이 목적이다. 또는 캐쉬 되거나…

위의 결과 외에도 이 라이브러리의 개발자가 언급한, 표현 가능한 결과물은 아래와 같으니 참고 바란다.

내용 정리 끝냈으니, 관련 소스 파일은 삭제 .. !

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다