[golang] 텍스트 이미지 생성 및 JPEG 인코딩

2024. 11. 14. 18:09·Language/Go

서론

Go 언어에서는 이미지 그리기와 JPEG 인코딩 및 디코딩을 표준 패키지에 제공하고 있어서 복잡한 외부 라이브러리 없이도 간단하게 이미지 파일을 생성하고 처리할 수 있다. image, image/color, image/draw와 같은 기본 패키지들을 활용하면 다양한 형태의 이미지를 생성하고 조작할 수 있으며, image/jpeg 패키지를 사용하면 JPEG 인코딩과 디코딩을 할 수 있다. 이 패키지들을 활용해서 이미지에 텍스트를 그린 후 JPEG으로 인코딩하여 저장해보자.

 

예제

package main

import (
	"image"
	"image/color"
	"image/draw"
	"image/jpeg"
	"log"
	"os"

	"golang.org/x/image/font"
	"golang.org/x/image/font/basicfont"
	"golang.org/x/image/math/fixed"
)

func main() {
	// 이미지 크기 설정
	width, height := 100, 100
	img := image.NewRGBA(image.Rect(0, 0, width, height))

	// 배경색 설정
	draw.Draw(img, img.Bounds(), &image.Uniform{color.Black}, image.Point{}, draw.Src)

	// 텍스트를 이미지에 그리기
	(&font.Drawer{
		Dst:  img,
		Src:  image.NewUniform(color.White), // 텍스트 색상 설정
		Face: basicfont.Face7x13,
		Dot: fixed.Point26_6{
			X: fixed.I(23), // X 좌표 설정
			Y: fixed.I(53), // Y 좌표 설정
		},
	}).DrawString("Jae-Sung")

	// 파일 생성
	outFile, err := os.Create("jae_sung.jpg")
	if err != nil {
		log.Fatal(err)
	}
	defer outFile.Close()

	// JPEG 인코딩 및 파일 쓰기
	if err = jpeg.Encode(outFile, img, &jpeg.Options{
		Quality: 100, // 품질 설정 (0~100)
	}); err != nil {
		log.Fatal(err)
	}
}

예제에서 출력된 이미지

예제 코드로 생성된 100x100 크기의 검정 배경에 흰색 글씨가 포함된 이미지다.

 

마무리

Go 언어는 이미지 처리에 필요한 표준 패키지들을 제공하고 있어 외부 패키지 없이도 간단히 이미지를 생성하고 조작할 수 있다. 이러한 기능은 서버 사이드에서 동적 이미지 생성과 같은 상황에 유용하게 활용될 수 있다. 예제에서는 외부 패키지를 사용해 폰트를 처리했지만 텍스트를 픽셀 단위로 직접 그린다면 표준 패키지만으로도 충분히 구현할 수 있다.

'Language > Go' 카테고리의 다른 글

[golang] 메모리 지역성을 고려한 2차원 슬라이스 순회  (0) 2024.11.16
[golang] URL 및 쿼리 파라미터 파싱과 수정하기  (0) 2024.11.15
[golang] GOMAXPROCS로 최대 CPU 코어 수 제한하기  (0) 2024.11.13
[golang] 파일 잠금으로 프로그램 중복 실행 방지하기  (0) 2024.11.12
[golang] 현재 운영 체제 확인하기  (0) 2024.11.11
'Language/Go' 카테고리의 다른 글
  • [golang] 메모리 지역성을 고려한 2차원 슬라이스 순회
  • [golang] URL 및 쿼리 파라미터 파싱과 수정하기
  • [golang] GOMAXPROCS로 최대 CPU 코어 수 제한하기
  • [golang] 파일 잠금으로 프로그램 중복 실행 방지하기
在晟
在晟
  • 在晟
    Jae-Sung
    在晟
  • 전체
    오늘
    어제
    • 분류 전체보기 (25)
      • Language (23)
        • Go (23)
      • DBMS (1)
        • MariaDB (1)
      • Notes (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Jae-Sung
    • GitHub
  • 인기 글

  • 태그

    티스토리챌린지
    filepath
    recover
    오블완
    Runtime
    go
    fasthttp
    interface{}
    unsafe
    http
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
在晟
[golang] 텍스트 이미지 생성 및 JPEG 인코딩
상단으로

티스토리툴바