Low quality wallpapers are a pain, I'm trying to fix that.

개요

Pinterest에서 다운로드한 이미지의 낮은 품질 문제 해결을 목표로 개발된 데스크톱 애플리케이션 Poster의 개발 여정과 기능이 소개됩니다.

주요 내용

* 문제 인식: Pinterest는 이미지 호스트가 아닌 썸네일 기반 서비스로, 다운로드한 이미지가 압축되거나 원본이 아닐 경우 바탕화면 설정 시 흐릿하게 보이는 문제가 발생합니다.
* 초기 구상: 사용자가 자신의 Pinterest 계정에 연결하고, AI 업스케일링, 중앙 라이브러리 기능, Unsplash API 연동 등을 포함하는 애플리케이션을 계획했습니다.
* 개발 과정의 난관:
* 기술 스택 충돌: pnpm과 Electron 환경 간의 비호환성 문제로 npm으로 전환했습니다.
* OS 연동: Electron에서 로컬 파일 경로 접근 및 표시 문제(file:// 프로토콜 처리)를 해결했습니다.
* 네이티브 의존성: sharp와 같은 네이티브 패키지의 Electron 환경 빌드에 어려움을 겪었습니다.
* AI 업스케일링: 초기 계획이었던 Replicate를 통한 서버 측 업스케일링 대신, API 비용 문제로 로컬 AI 업스케일링으로 전환했습니다.
* API 정책: Unsplash API가 바탕화면 애플리케이션 통합을 명시적으로 제한하여 해당 기능을 구현할 수 없었습니다.
* 자동 업데이트: Electron 초보자에게는 복잡한 자동 업데이트 기능 설정에 시간을 투자했습니다.
* 현재 기능 및 향후 계획:
* 구현된 기능: 무료 로컬 이미지 라이브러리, 슬라이드쇼 모드.
* Poster Plus (유료): 시간대별 스케줄링 (아침, 점심, 저녁, 밤), 로컬 AI 업스케일링 (저해상도 Pinterest 이미지 개선).
* 향후 예정: Pinterest 연동, 클라우드 스토리지, Replicate 업스케일링 (비용 문제 해결 후).
* 최적화: 다수의 이미지를 처리할 때 성능 저하를 방지하기 위해 뷰포트 외부 이미지는 렌더링하지 않는 Occlusion Culling 기법을 적용하여 썸네일 위주로 표시합니다.

시사점

Poster는 초기 구상과 달리 여러 제약과 변경 사항을 거쳤음에도 불구하고, 실제 사용자의 문제(저품질 이미지)를 해결하는 데 집중하여 완성되었습니다. 이는 기술 개발 과정에서 예상치 못한 문제에 직면했을 때 유연하게 대처하고 핵심 가치를 유지하는 것의 중요성을 보여줍니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions