| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- Linux
- 명심보감
- 코틀린
- 장자명언
- MCP
- Firebase
- ASMR
- Gemini
- AI
- 오늘의역사
- Android
- Flutter
- 파이썬
- 소울칼리버6
- 오픈소스
- Freesound
- 이모지메모
- Skills
- javascript
- FSM
- 좋은글필사하기
- DART
- 생성AI
- 명언모음
- Codex
- kotlin
- 명언
- Coroutine
- gemini-cli
Archives
- Today
- Total
Vintage appMaker의 Tech Blog
[이미지 변환] jpg로 압축변환 본문
이미지 자동 변환 스크립트 개발자 매뉴얼
본 문서는 지정된 디렉토리 내에 추가되는 이미지 파일(PNG, BMP, TIFF 등)을 실시간으로 감지하여 품질 80%의 JPG 파일로 자동 변환하는 watchdog_jpgconvt.py 스크립트의 사용 및 운용 가이드입니다.
1. 목적
- 실시간 이미지 포맷 최적화: 로컬 폴더에 새로 생성되거나 복사되는 PNG, BMP, TIFF 파일들을 감지하여 JPEG로 변환하고 웹 친화적인 용량(품질 80%)으로 압축하여 저장 공간을 효율화합니다.
- 사용자 맞춤 경로 지원: 명령줄 매개변수(Argument)로 감시할 디렉토리 경로를 직접 전달받거나, 누락된 경우 입력을 받아 유동적인 작업 폴더 모니터링을 가능케 합니다.
2. 소스코드 전체
watchdog_jpgconvt.py의 전체 소스코드는 다음과 같습니다.
import sys
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from PIL import Image
import os
class ImageAutoConverterHandler(FileSystemEventHandler):
def on_created(self, event):
# png, bmp, tiff 파일을 타겟으로 지정
if not event.is_directory and event.src_path.lower().endswith(('.png', '.bmp', '.tiff')):
time.sleep(1) # 파일 쓰기 완료 임시 대기
try:
dest_path = os.path.splitext(event.src_path)[0] + '.jpg'
with Image.open(event.src_path) as im:
im.convert("RGB").save(dest_path, "JPEG", quality=80)
print(f"Auto-converted: {event.src_path} -> {dest_path}")
except Exception as e:
print(f"Conversion failed for {event.src_path}: {e}")
if __name__ == "__main__":
# 실행 시 실행 인자(Argument)로 감시할 폴더를 지정받고, 없으면 직접 입력받음
if len(sys.argv) > 1:
path = sys.argv[1]
else:
path = input("감시할 폴더 경로를 입력하세요: ").strip()
# 경로 유효성 검사
if not os.path.isdir(path):
print(f"오류: '{path}'는 올바른 디렉토리 경로가 아닙니다.")
sys.exit(1)
event_handler = ImageAutoConverterHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=False)
observer.start()
print(f"Monitoring started for folder: {path}")
print("종료하려면 Ctrl+C를 누르세요.")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
3. 패키지 설치 및 실행
패키지 설치
스크립트 실행에 필요한 라이브러리(watchdog, Pillow)를 설치합니다.
pip install watchdog Pillow
실행 방법
방법 A: 실행 시 감시 폴더를 인자로 전달 (권장)
python watchdog_jpgconvt.py "C:\Users\user\Downloads"
방법 B: 대화형 입력으로 폴더 지정
인자 없이 스크립트를 실행한 후 나타나는 프롬프트에 경로를 입력합니다.
python watchdog_jpgconvt.py
# 출력: 감시할 폴더 경로를 입력하세요:
4. 백그라운드에서 실행 및 종료 방법
Windows 백그라운드 실행 (PowerShell)
콘솔 창을 띄우지 않고 백그라운드 프로세스로 동작하게 하려면 Start-Process 명령어를 사용합니다.
Start-Process python -ArgumentList "C:\Users\user\Downloads\watchdog_jpgconvt.py C:\Users\user\Downloads" -WindowStyle Hidden
백그라운드 프로세스 종료 방법 (PowerShell)
실행 중인 백그라운드 스크립트를 찾아 강제 종료합니다.
# 실행 중인 watchdog_jpgconvt.py 프로세스 식별 및 종료
Get-WmiObject Win32_Process -Filter "name='python.exe'" | Where-Object { $_.CommandLine -like "*watchdog_jpgconvt.py*" } | ForEach-Object { Stop-Process $_.ProcessId -Force }'Source code or Tip > python' 카테고리의 다른 글
| pdf, jpg 변환 유틸리티를 TUI로 관리 (0) | 2026.06.18 |
|---|---|
| [python] pdf에 워터마크 및 jpg로 출력하기 (0) | 2026.06.12 |
| python에서 case - 딕셔너리와 함수 (0) | 2020.12.30 |
| python에서 간단한 RPC 구현 (Ubuntu <--> Windows) (0) | 2020.12.09 |
| [github] 파이썬 확장모듈(C++) 만들기 (0) | 2020.12.03 |
Comments
