Codex 업무 자동화 예제 | Python 이미지 리사이즈 프로그램 만들기


Codex로 만든 Image Resize 자동화 프로그램

오늘 처음으로 Codex를 설치해 보았다. 

무료 플랜이라 사용할 수 있는 모델이 '5.6 Terra' 만 가능했다. 

무료 플랜으로 만들 수 있는 실제로 사용할 수 있는 작은 자동화 도구를 추천해 달라고 했더니, 

그 중에 이미지 리사이즈 자동화가 있었다.  

그래서 다시 채팅으로 '이거 하고 싶은데 어떻게 해야 해?' 라고 물어보았더니, 

아래와 같이(프로젝트 목표에서 마무리까지) 자세하게 설명해 주었다. 

내가 한 것은 ChatGPT가 알려준 프롬프트대로 Codex에게 일을 시킨 거 밖에 없는데, 

아래의 프로젝트 목표와 똑 같은 결과물은 아니었지만, 괜찮은 결과물이 나왔다. 

이미지 resize하고, webp 변환과, 

이미지 압축(TinyPNG 같은 기능)까지 해봤는데, 

남아있는 토큰을 봤더니 25%가 남았다. 

한 달 동안 쓸 수 있는 토큰의 75%를 쓴거다. 

토큰이 5시간마다 리셋이 되었으면 불가능했을텐데, 

한달마다 리셋되도록 풀려서 정말 맛보기로 간단한 것은 만들어 볼 수 있을 거 같다. 

결과 코드는 github에 올려 놓았다. 

Python으로 구현되었으며 자세한 설치 방법과 사용법은 README을 보면 된다. 


Codex 실행 화면
Codex 실행 화면


프로젝트 목표

예를 들어 다음과 같은 이미지 폴더가 있다고 가정한다.

images/
    photo1.jpg
    photo2.png
    logo.webp

다음과 같이 명령어를 실행하면

python resize.py images --width 1200

자동으로 output 폴더에 리사이즈된 이미지를 생성한다.

output/
    photo1.jpg
    photo2.png
    logo.webp

즉, 여러 장의 이미지를 한 번에 원하는 크기로 변경하는 자동화 프로그램을 만드는 것이 목표이다.


1단계. 프로젝트 생성

먼저 간단한 프로젝트 구조를 만든다.

image-resizer/
├── resize.py
├── requirements.txt
├── README.md
├── images/
└── output/

Python에서는 Pillow 라이브러리 하나만 설치하면 시작할 수 있다.

pip install pillow

2단계. 첫 번째 목표

처음부터 많은 기능을 만들려고 하지 말고 아래 기능만 구현한다.

  • JPG 파일 읽기
  • PNG 파일 읽기
  • 비율을 유지하면서 리사이즈
  • output 폴더에 저장

이 정도만 구현되어도 충분히 하나의 프로그램이라고 할 수 있다.


3단계. 기능을 하나씩 추가하기

기본 기능이 완성되면 Codex에게 조금씩 기능을 추가하도록 요청한다.

① 크기 옵션 추가

--width 1200
--height 800
--max-width 1600

원하는 크기를 명령어에서 직접 지정할 수 있도록 만든다.


② WebP 변환

python resize.py images --webp

JPEG나 PNG를 WebP로 변환하도록 기능을 추가한다.


③ 이미지 품질 조절

--quality 85

파일 용량을 줄이기 위해 품질을 조절할 수 있도록 한다.


④ 여러 포맷 지원

  • jpg
  • jpeg
  • png
  • webp
  • bmp
  • tiff

⑤ 진행률 표시

[#####-----] 5/12

이미지가 많을 경우 현재 진행 상황을 표시해 준다.


⑥ 하위 폴더까지 처리

입력 폴더

images/
    product/
    banner/
    icon/

출력 폴더

output/
    product/
    banner/
    icon/

폴더 구조를 그대로 유지하면서 모든 이미지를 처리하도록 만든다.


⑦ 작은 이미지는 건너뛰기

예를 들어 이미 500px인 이미지를 다시 리사이즈할 필요는 없다.

설정한 크기보다 작은 이미지는 자동으로 건너뛰도록 만들 수 있다.


⑧ 덮어쓰기 방지

원본

photo.jpg

출력

photo_1200.jpg

원본 파일을 보호하기 위해 새로운 이름으로 저장하도록 만든다.


4단계. GUI로 발전시키기

CLI 프로그램이 완성되면 나중에는 간단한 GUI도 추가할 수 있다.

[폴더 선택]

가로 크기

품질

[Start]

tkinter나 PySide6를 이용하면 마우스로도 사용할 수 있는 프로그램을 만들 수 있다.


Codex에게 이렇게 요청해 보자

처음부터 모든 기능을 한 번에 만들어 달라고 하기보다 작은 단위로 요청하는 것이 훨씬 효과적이다.

I want to build a Work Toolkit project that will eventually contain several automation tools. Let's start with an image resizing tool.
Create a clean Python project structure.
Requirements:
* Use Python 3.12
* Use argparse
* Put the resize logic in its own module
* Keep the code easy to extend
* Explain every file you create.

그 다음에는 아래와 같이 기능을 하나씩 추가한다.

  • Add support for WebP conversion with a --webp option.
  • Add recursive directory traversal while preserving the original folder structure.
  • Add unit tests for the resizing logic.
  • Refactor the project into a reusable package with a clean architecture.

이처럼 기능을 하나씩 구현하고 개선해 나가는 과정이 Codex를 가장 효과적으로 활용하는 방법이다.


마무리

처음에는 단순히 이미지를 줄이는 프로그램으로 시작하지만, 조금씩 기능을 추가하다 보면 실제 업무에서 사용할 수 있는 수준의 자동화 도구가 된다.

예를 들어 최종적으로는 다음과 같은 기능을 갖춘 프로그램으로 발전시킬 수 있다.

  • EXIF 회전 정보 자동 적용
  • WebP와 JPEG 동시 생성
  • 이미지 품질 자동 조절
  • 메타데이터 제거
  • 파일 용량 비교 리포트 생성
  • CSV 또는 Markdown 보고서 생성

작게 시작해서 하나씩 개선하는 것이 Codex를 익히는 가장 좋은 방법이다.

댓글

이 블로그의 인기 게시물

Claude Code 토큰 절약 가이드

Codex로 무료 온라인 툴 사이트 만들기: AGENTS.md 하네스 적용부터 직접 따라 하기

‘클라우드플레어(Cloudflare)’란 무엇일까? 내 블로그를 빠르고 안전하게! (무료 기능 및 티스토리 연동법)