React와 Python(pywebview)을 결합한 지능형 이미지 그리드 커팅 및 관리 도구입니다. 고해상도 이미지(TIF 등)를 격자 형태로 정밀하게 자르고, 관리하기 쉬운 인터페이스를 제공하며, AI 모델 학습용 이미지 데이터를 전처리하는 용도로 최적화되어 있습니다.
- 지능형 그리드 분할: 대용량 이미지를 설정한 격자 값에 맞춰 자동으로 분할 및 저장합니다.
- 사용자 정의 프리셋: 자주 사용하는 커팅 설정을 저장하고 불러와 작업 효율을 높입니다.
- 실시간 미리보기: 프론트엔드(React)를 통해 커팅될 영역을 시각적으로 즉시 확인합니다.
- 로컬 데이터 관리: 모든 프리셋 데이터는 사용자의
AppData에 안전하게 보관됩니다. - 직관적인 UI: 모던하고 깔끔한 대시보드 인터페이스를 제공합니다.
- React (Vite): 빠르고 반응성 있는 UI 구성
- Styled Components: 모던한 컴포넌트 기반 스타일링
- Lucide React: 깔끔한 아이콘 시스템
- Python 3.8+: 핵심 로직 및 이미지 처리
- pywebview: Python과 웹 기술 간의 브릿지 역할
- Pillow / OpenCV: 고성능 이미지 프로세싱
-
레포지토리 클론
git clone https://github.com/Lookies09/GridCutter.git cd GridCutter -
프론트엔드 의존성 설치 및 빌드
cd frontend npm install npm run build -
백엔드 환경 구성
cd ../backend uv sync -
앱 실행
pywebview는 빌드된 정적 파일을 기준으로 동작하므로, 프론트엔드를 먼저 빌드한 뒤 백엔드를 실행합니다.
# frontend 폴더에서 빌드 cd frontend npm run build # backend 폴더에서 실행 cd ../backend uv run python main.py
PyInstaller를 사용하여 단일 실행 파일(.exe)로 빌드할 수 있습니다.
주의: 빌드 전
frontend폴더에서npm run build를 먼저 수행하여dist폴더를 생성해야 합니다.
# backend 폴더에서 실행
uv run pyinstaller --noconfirm --onefile --windowed `
--icon="app_icon.ico" `
--add-data "../frontend/dist;frontend/dist" `
--add-data "src;src" `
--paths "." `
--name "RiceGridApp" `
main.py빌드가 완료되면 backend/dist/RiceGridApp.exe 파일이 생성됩니다.
GridCutter/
├── frontend/ # React (Vite) 프론트엔드 소스
│ ├── src/
│ │ ├── components/ # 재사용 가능한 UI 컴포넌트
│ │ ├── utils/ # 프론트엔드 공통 유틸리티
│ │ ├── App.jsx # 메인 애플리케이션 컴포넌트
│ │ └── main.jsx # 리액트 진입점
│ └── vite.config.js
│
├── backend/ # Python 백엔드 및 로직
│ ├── tests/ # 테스트
│ ├── src/
│ │ ├── core/ # 핵심 비즈니스 로직 (API 등)
│ │ └── utils/ # 이미지 처리, 파일 IO 등 공통 함수
│ ├── main.py # 프로그램 실행 진입점
│ └── pyproject.toml # 파이썬 의존성 목록
│
└── README.md

