{"id":47093267,"url":"https://github.com/idkonly/comfy-image-browser","last_synced_at":"2026-04-26T17:00:36.798Z","repository":{"id":343931049,"uuid":"1178824676","full_name":"IDKonly/Comfy-image-browser","owner":"IDKonly","description":"ComfyUI를 위한 이미지 검색/색인/뷰어와 와일드카드 생성, 이미지 후처리 도구","archived":false,"fork":false,"pushed_at":"2026-04-26T05:52:32.000Z","size":66147,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-26T07:24:54.388Z","etag":null,"topics":["comfyui","image-processing","image-viewer"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IDKonly.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-11T12:05:57.000Z","updated_at":"2026-04-26T05:52:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"64cd2d66-ee1d-4f0d-8211-37336ee99d4c","html_url":"https://github.com/IDKonly/Comfy-image-browser","commit_stats":null,"previous_names":["idkonly/comfy-image-browser"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/IDKonly/Comfy-image-browser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IDKonly%2FComfy-image-browser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IDKonly%2FComfy-image-browser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IDKonly%2FComfy-image-browser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IDKonly%2FComfy-image-browser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IDKonly","download_url":"https://codeload.github.com/IDKonly/Comfy-image-browser/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IDKonly%2FComfy-image-browser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32305039,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["comfyui","image-processing","image-viewer"],"created_at":"2026-03-12T12:16:08.952Z","updated_at":"2026-04-26T17:00:36.788Z","avatar_url":"https://github.com/IDKonly.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🖼️ ComfyView (Next-Gen)\n**\"Rust 기반의 압도적 성능, AI 사용자를 위한 지능형 이미지 브라우저 \u0026 프롬프트 워크숍\"**\n\nComfyView는 ComfyUI 및 Automatic1111 유저들을 위해 설계된 Tauri 기반 고성능 데스크톱 애플리케이션입니다.\n수만 장의 생성 이미지 사이에서 보석을 찾아내고, 복잡한 프롬프트를 나만의 지능적인 **Wildcard로 압축하는 데 최적화**되어 있습니다.\n이 프로젝트의 코드는 99.8% 바이브코딩 되었으며, 내부 알고리즘과 구동방방식을 포함한 핵심 아키텍쳐는 사용자가 설계했습니다.\n코드가 의도치 않은 취약점을 가지고 있을 수 있으나, 이에 대한 책임은 사용자에게 있습니다. 제보된 취약점은 비정기적으로 유지보수됩니다.\n프롬프트 등의 메타데이터 추출은 현재 제작자의 CompyUI 워크플로에 맞추어 설계되었기 때문에 작동 여부는 책임지지 않습니다.\n\n---\n\n## 🚀 왜 ComfyView인가? (Key Advantages)\n\n1. **압도적인 속도 (Rust-Powered)**: 일반적인 이미지 뷰어와는 차원이 다릅니다. Rust의 `Rayon` 멀티스레딩과 `SQLite` 인덱싱을 결합하여, 수만 장의 이미지가 담긴 폴더도 지연 없이 즉시 탐색하고 검색합니다.\n2. **AI 메타데이터 특화**: 단순한 EXIF 읽기를 넘어, PNG tEXt/iTXt 청크에 숨겨진 ComfyUI(JSON) 및 A1111(Text) 프롬프트를 정밀하게 파싱하여 워크플로우를 분석합니다.\n3. **지능형 프롬프트 압축 (Wildcard Workshop)**: Jaccard 유사도 알고리즘을 사용하여 수백 개의 유사 프롬프트를 하나의 `{tag1|tag2|tag3}` 패턴으로 자동 변환합니다.\n4. **생산성 중심 UX**: `K`(Keep), `Delete`(Trash), `Ctrl+Z`(Undo)로 이어지는 단축키 중심의 분류 로직은 수천 장의 이미지를 단시간 내에 정리하게 해줍니다.\n\n---\n\n## ✨ 핵심 기능 상세 (Feature Deep Dive)\n\n### 1. Wildcard Workshop (지능형 프롬프트 압축 엔진)\n단순한 태그 나열이 아닌, 수많은 이미지의 프롬프트를 분석하여 최적화된 와일드카드 소스를 생성합니다.\n- **Jaccard 유사도 분석**: 프롬프트 간의 거리를 수학적으로 계산하여 유사한 결과물들을 지능적으로 그룹화합니다.\n- **다양한 병합 모드**:\n    - **Simple Mode**: 가장 빈도가 높은 공통 태그를 추출하고 나머지를 선택지(`{A|B}`)로 결합합니다.\n    - **Mix Mode (Advanced)**: 여러 이미지의 프롬프트를 재귀적으로 분석하여 복잡한 계층 구조의 와일드카드를 생성합니다.\n- **유니버설 베이스(Universal Base)**: 선택된 모든 프롬프트에서 100% 일치하는 핵심 공통 성분을 먼저 분리하여 프롬프트의 골격을 유지합니다.\n- **강력한 태그 필터링**: 단어 수 제한, 특정 태그 포함/제외 필터, 중복 제거 등을 통해 정제된 결과물만 남깁니다.\n- **실시간 확장(Expansion) 미리보기**: 생성된 패턴이 실제 프롬프트로 어떻게 치환되는지 즉시 확인하고 `.txt` 파일로 저장할 수 있습니다.\n\n### 2. Tag Classifier (룰 기반 자동 분류기)\n수천 장의 이미지를 프롬프트 내용에 따라 클릭 한 번으로 체계적인 폴더 구조로 정리합니다.\n- **JSON 룰 엔진**: 사용자가 정의한 JSON 설정에 따라 특정 키워드가 포함된 이미지를 해당 카테고리로 자동 분류합니다.\n- **멀티 카테고리 지원**: 캐릭터, 화풍(Style), 배경, 구도 등 다양한 기준을 동시에 적용할 수 있습니다.\n- **정규식(Regex) 기반 매칭**: 단순 단어 매칭을 넘어 복잡한 패턴을 인식하여 정밀하게 분류합니다.\n- **계층적 분류**: `캐릭터/의상/색상`과 같이 깊은 단계의 하위 폴더 구조를 자동으로 생성하며 파일을 이동시킵니다.\n\n### 3. Batch Crop Module (학습 데이터셋 전처리)\nAI 모델(LoRA 등) 학습을 위한 이미지 정제 작업을 극적으로 단축합니다.\n- **스마트 스냅 가이드 (Snap Guides)**: 이미지의 경계면이나 다른 크롭 영역에 자석처럼 붙는 스냅 기능을 지원하여 정밀한 정렬이 가능합니다.\n- **다중 영역 동시 조작**: 여러 개의 크롭 박스를 동시에 선택하여 이동하거나 크기를 조절할 수 있습니다.\n- **그리드 및 비율 프리셋**: 1:1, 16:9 등 주요 비율 고정 기능과 2x2, 3x3 등의 일괄 그리드 생성 기능을 제공합니다.\n- **시각적 보조 도구**: 각 크롭 박스마다 '3분할 법칙' 가이드라인과 실시간 해상도(WxH) 정보가 표시됩니다.\n- **생산성 단축키**: `Ctrl+C/V`를 통한 크롭 사이즈 복사, `Shift`를 이용한 축 고정 및 비율 유지를 지원합니다.\n\n### 3. 초고속 브라우징 및 검색\n- **멀티스레드 스캐닝**: 하드웨어 성능을 끝까지 끌어내어 이미지와 메타데이터를 병렬로 인덱싱합니다.\n- **스프레드 인덱싱 (Spread Indexing)**: 수만 장의 이미지가 있는 폴더에 드래그 앤 드롭을 하더라도 앱이 멈추지 않습니다. 현재 사용자가 보고 있는 이미지의 위치를 기준으로 **양방향으로 퍼져나가며 가장 가까운 이미지부터 우선적으로 인덱싱**합니다.\n- **실시간 청크 동기화**: 백그라운드에서 수만 장을 인덱싱할 때, 50장 단위(Chunk)로 즉시 DB에 저장하고 UI에 반영하므로 진행 상황과 메타데이터를 지연 없이 실시간으로 확인할 수 있습니다.\n- **강력한 필터링**: 프롬프트 키워드, 폴더 구조, 날짜, 정렬 기준을 조합하여 원하는 이미지를 즉시 찾습니다.\n\n### 4. Comfy Reels (모바일 분류기)\nPC 앞에 앉아 있지 않아도, 침대에 눕거나 이동 중에 스마트폰으로 대량의 이미지를 초고속 분류할 수 있습니다.\n- **릴스(Reels) 스타일 피드**: 좌우 스와이프 대신 상하 스크롤 방식을 채택했습니다. 틱톡이나 인스타그램 릴스를 보듯 가볍게 넘기며 이미지를 감상하세요.\n- **스크롤 스냅 (Scroll Snap)**: 한 번의 스크롤에 이미지 한 장씩 딱딱 맞춰서 멈추므로 조작 피로도가 매우 낮습니다.\n- **초고속 반응성**: 지능형 3단계 프리로딩(Preloading)과 가변 뷰포트(`dvh`) 최적화를 통해 렉 없는 매끄러운 경험을 제공합니다.\n- **상시 접근 폴더 (Authorized Roots)**: 데스크톱에서 폴더를 열어주지 않아도, 설정에서 지정한 폴더와 그 하위 폴더들에 언제든 모바일로 접속하여 탐색할 수 있습니다.\n- **작업 연속성**: 폴더별 마지막 위치 자동 저장(Resume) 및 특정 위치 직접 이동(Jump) 기능을 지원합니다.\n\n---\n\n## 🛠️ 기술 스택 (Tech Stack)\n\n- **Frontend**: React 18, TypeScript, Vite, Tailwind CSS, Zustand (State)\n- **Backend**: Rust, Tauri v2 (High-performance Desktop Framework)\n- **Database**: SQLite (Metadata Indexing \u0026 Persistence)\n- **Concurrency**: Rayon (Data-parallelism), Walkdir\n- **UI Components**: Lucide React (Icons), react-window (Virtualization)\n\n---\n\n## 🎯 사용 시나리오 (Usage Scenarios)\n\n### 1. \"최적의 와일드카드 자산 구축\"\n수천 장의 테스트 이미지 중 맘에 드는 스타일의 이미지를 골라 **Wildcard Workshop**에 넣으세요. 단 한 번의 클릭으로 당신의 다음 프로젝트에서 사용할 수 있는 고도로 정제된 프롬프트 템플릿이 완성됩니다.\n\n### 2. \"대량 이미지 고속 정제\"\n분류되지 않은 수천 장의 이미지를 드래그하세요. 배치 모드(`B`)에서 `K`와 `Delete`를 리드미컬하게 누르기만 하면, 모든 이미지는 원본 경로의 하위 폴더(`_Keep`, `_Trash`)로 깔끔하게 정리됩니다.\n\n### 3. \"학습용 데이터셋 일괄 생성\"\n**Batch Crop** 기능을 열어 이미지 한 장에서 여러 캐릭터나 오브젝트를 동시에 추출하세요. 그리드 생성과 스냅 기능을 활용하면 수작업 대비 5배 이상의 속도로 학습 데이터를 준비할 수 있습니다.\n\n---\n\n## ⌨️ 핵심 단축키 (Core Shortcuts)\n\n### 🖼️ 브라우저 모드\n- `→` / `←` : 다음/이전 이미지 탐색\n- `Delete` : 휴지통(`_Trash`)으로 이동\n- `K` : 보관함(`_Keep`)으로 이동\n- `Ctrl + Z` : 최근 이동 작업 되돌리기 (최대 50회)\n- `B` : 그리드 배치 모드 토글\n- `/` : 검색창 포커스\n\n### ✂️ 배치 크롭 모드\n- `Mouse Drag` : 새로운 크롭 영역 생성\n- `Shift + Drag` : 가로/세로 축 고정 또는 비율 고정\n- `Alt + Drag` : 스냅 가이드 무시\n- `Ctrl + C / V` : 선택한 크롭 박스의 크기 복사/붙여넣기\n- `Delete / Backspace` : 선택한 영역 삭제\n\n---\n\n## 📦 설치 및 실행 (Installation \u0026 Run)\n\nWindows 환경에서는 루트 폴더의 `run.bat` 실행이 가장 권장됩니다.\n\n1. **사전 준비**: [Node.js](https://nodejs.org/) 및 [Rust](https://rustup.rs/) 환경이 설치되어 있어야 합니다.\n2. **자동 실행**: 루트의 `run.bat`을 실행하면 의존성 설치 및 개발 서버 구동이 자동으로 진행됩니다.\n3. **빌드**: `build.bat`을 실행하여 최적화된 설치 파일(`.msi` 등)을 생성할 수 있습니다.\n\n---\n\n## 📱 Comfy Reels 모바일 사용 가이드 (Mobile Guide)\n\n데스크톱의 기능을 모바일로 확장하여 언제 어디서든 이미지를 정제할 수 있습니다.\n\n### 1. 서버 활성화 및 접속\n1. 앱 상단의 ⚙️ **Settings** 아이콘을 클릭합니다.\n2. **Mobile Connectivity** 섹션에서 **Enable Server**를 활성화합니다.\n3. **Restrict to this PC** 옵션이 꺼져 있는지 확인합니다. (모바일 접속을 위해 필수)\n4. 화면에 나타나는 **Access URL**(`http://192.168.x.x:4882`)을 모바일 브라우저 주소창에 입력합니다.\n\n### 2. 상시 접근 폴더 (Authorized Folders) 설정\n모바일에서 매번 새로운 폴더를 열 필요 없이, 자주 사용하는 루트 폴더를 미리 등록할 수 있습니다.\n- 설정 창의 **Authorized Folders** 옆 `+` 버튼을 눌러 폴더를 추가합니다.\n- 등록된 폴더는 모바일 첫 화면에 항상 나타나며, 내부의 모든 하위 폴더를 자유롭게 탐색할 수 있습니다.\n\n### 3. 모바일 피드 조작법\n- **상하 스크롤**: 이미지를 위아래로 넘기며 감상합니다. 스냅 기능이 있어 한 장씩 정확히 멈춥니다.\n- **분류 버튼**: 우측 하단의 **Keep ⭐** 또는 **Trash 🗑️** 버튼을 눌러 이미지를 분류합니다.\n- **보류 (Skip)**: 그냥 다음 이미지로 스크롤하여 넘기면 자동으로 '보류' 처리됩니다.\n- **Side 전환**: 헤더의 **Side** 버튼을 누르면 분류 버튼의 위치(왼쪽/오른쪽)를 바꿀 수 있습니다.\n- **점프 및 이어하기**: 헤더 중앙의 **인덱스**를 터치하여 원하는 번호로 점프하거나, 이전에 작업하던 위치에서 **Resume** 버튼으로 이어할 수 있습니다.\n\n---\n**ComfyView**와 함께 더욱 스마트하고 쾌적한 AI 아트 워크플로우를 경험해보세요! 🎨\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidkonly%2Fcomfy-image-browser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidkonly%2Fcomfy-image-browser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidkonly%2Fcomfy-image-browser/lists"}