Skip to content

wkqco33/imgtobyte

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

imgtobyte

이미지를 마이크로컨트롤러(MCU)용 바이트 배열로 변환하는 고성능 CLI 도구입니다. 아두이노, ESP32, STM32 등 임베디드 환경의 LCD/OLED 디스플레이에 이미지를 출력하기 위한 데이터 생성에 최적화되어 있습니다.

핵심 기능

  • 다양한 포맷 지원: PNG, JPEG, BMP, GIF, WebP 등 주요 이미지 포맷 지원
  • 최적화된 변환 모드:
    • Monochrome (1-bit): SSD1306 등 흑백 OLED용 비트맵 생성
    • Color (RGB565): TFT LCD용 16비트 컬러 데이터 생성
  • 터미널 프리뷰 (New): --preview 플래그를 통해 터미널에서 o, x 문자로 변환 결과를 즉시 확인
  • C 헤더 파일 자동 생성: PROGMEM을 포함한 즉시 사용 가능한 C 배열 구조 생성
  • Go 라이브러리 지원 (New): pkg/converter 패키지를 통해 다른 Go 프로젝트에서 라이브러리로 활용 가능
  • 세련된 CLI UI: ASCII 배너 및 컬러 출력을 통한 직관적인 작업 피드백
  • ppm 호환: ppm 패키지 매니저를 통한 간편한 설치 지원

설치 방법

ppm을 사용하는 경우 (추천)

ppm install wkqcosoft/imgtobyte

소스에서 빌드하는 경우

Go 1.23 이상의 환경이 필요합니다.

git clone https://github.com/wkqcosoft/imgtobyte.git
cd imgtobyte
make build

사용 방법

기본 변환 (C 헤더 파일 생성 + 터미널 프리뷰)

이미지를 흑백 128x64 크기로 변환하고 터미널에서 결과를 미리 봅니다.

./imgtobyte convert -i logo.png -W 128 -H 64 -p -o ./output

컬러 변환 (RGB565)

--color 또는 -c 플래그를 사용하여 16비트 컬러 모드로 변환합니다.

./imgtobyte convert -i photo.jpg -W 240 -H 240 --color -o ./output

Raw 데이터 생성

헤더 없이 순수 바이너리 데이터만 필요한 경우 사용합니다.

./imgtobyte raw -i image.png -W 128 -H 64 -o image.raw

라이브러리 사용법 (Go)

imgtobyte의 핵심 엔진(pkg/converter)을 프로젝트에서 직접 사용할 수 있습니다.

import "github.com/wkqco33/imgtobyte/pkg/converter"

// 1. 이미지 로드 및 리사이즈
img, _ := imaging.Open("logo.png")
resizedImg := converter.ResizeImage(img, 128, 64)

// 2. 변환 옵션 설정
opts := converter.Options{
    Width:      128,
    Height:     64,
    Color:      true, // RGB565 컬러 모드
    Identifier: "my_logo",
}

// 3. 바이트 데이터로 변환
pixelData := converter.ImageToBytes(resizedImg, opts)

// 4. C 헤더 파일 내용 생성
headerContent := converter.GenerateHeader(pixelData, opts)

주요 옵션

플래그 설명 기본값
-i, --input 입력 이미지 파일 경로 (필수) -
-W, --width 출력 이미지 너비 (픽셀) 128
-H, --height 출력 이미지 높이 (픽셀) 64
-c, --color RGB565 컬러 모드 활성화 false (흑백)
-p, --preview 터미널 ASCII 프리뷰 출력 false
-o, --output 결과물 저장 디렉토리 ./
-d, --debug 디버그 로그 활성화 false

설계 철학

  1. 성능 최우선: 불필요한 추상화를 제거하고 고성능 이미지 처리 라이브러리를 활용하여 대량의 이미지도 빠르게 처리합니다.
  2. 데이터 중심: MCU의 메모리 구조를 고려하여 직관적이고 효율적인 바이트 배열 구조를 생성합니다.
  3. 사용자 경험: 터미널 프리뷰와 세련된 UI를 통해 작업 과정을 직관적으로 파악할 수 있게 합니다.

개발 환경

  • Language: Go 1.24
  • CLI Framework: Cobra
  • Configuration: Viper
  • Image Processing: imaging
  • UI/Color: fatih/color

라이선스

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors