PhotoCraft 는 레이어, 마스크, 텍스트, 벡터, 브러시와 PSD 편집을 지원하는 오프라인 네이티브 이미지 편집기로, 공개 명세와 관찰한 동작만으로 Photoshop을 재구현함
PSD 호환성 테스트에서 psd-tools 파일 309개 중 307개는 열고 다시 저장한 뒤에도 렌더링 결과를 유지함. 다만 앱에서 재저장한 파일이 원본과 바이트 단위로 동일한 것은 아님
wgpu GPU 합성기 와 쓰기 시 복사 타일, 멀티스레드 필터를 사용하며, Electron이나 웹뷰 없이 Rust 엔진과 egui UI로 구성됨
500개 이상 명령 을 UI, CLI, JSON 제어 채널, MCP 서버가 공유해, 클릭으로 수행하는 작업을 스크립트나 AI 에이전트에서도 실행할 수 있음
현재 초기 알파 로, 일상적인 전문 작업에서 Photoshop을 대체할 수준은 아님. AI/생성형 기능, 약 20개 도구, 고급 타이포그래피와 전문 작업 흐름, 플러그인 호환성이 주요 공백임
편집기 설계와 실행 환경
PhotoCraft 는 Photoshop 사용자에게 익숙한 메뉴, 단축키, 패널과 도구 배치를 지향하는 오픈소스 이미지 편집기임
오프라인 네이티브 앱 으로 동작하며, macOS, Windows, Linux, FreeBSD와 웹용 배포본을 GitHub 릴리스 에서 제공함
클린룸 구현 은 공개 명세와 관찰한 동작에만 기반하며, 독점 코드, 셰이더, 자산을 사용하지 않음
비파괴 편집과 레이어
16종 조정 레이어 는 원본 픽셀을 바꾸지 않은 채 쌓기, 영역 마스킹, 순서 변경, 비활성화가 가능하며, 같은 조정을 픽셀에 직접 적용할 수도 있음
채널별 Curves, 실시간 히스토그램을 갖춘 Levels, Vibrance, Hue/Saturation, Black & White, Channel Mixer, Gradient Map, Photo Filter, Selective Color, Color Lookup을 지원함
Color Lookup은 .cube
, .3dl
, .look
을 지원하며, Shadows/Highlights, Replace Color, Match Color, HDR Toning, Desaturate, Equalize도 제공함
레이어 스타일 은 텍스트를 포함한 모든 레이어에 실시간 적용할 수 있음
Drop Shadow, Inner Shadow, Outer/Inner Glow, Bevel & Emboss, Satin, Stroke, Color/Gradient/Pattern Overlay를 지원함
패턴은 내장 라이브러리, Edit › Define Pattern
, .pat
가져오기/내보내기, PSD의 Patt
블록에서 가져올 수 있음
레이어 간 스타일 복사/붙여넣기, 전체 효과 숨기기와 PSD 스타일 불러오기를 지원함
레이어 모델 은 그룹, 클리핑 마스크, 픽셀/벡터 마스크, 단색/그레이디언트/패턴 채우기 레이어를 지원함
스마트 오브젝트에는 편집 가능한 스마트 필터와 무손실 변형/왜곡을 적용할 수 있음
여러 레이어 선택 후 정렬/분배/연결, 알파 채널, Quick Mask, 27개 혼합 모드 , 불투명도와 채우기, 잠금, 색상 라벨, 레이어 필터를 제공함
병합, 전체 병합, 래스터화, 복사/잘라내기로 레이어 만들기, 선택 영역 안에 붙여넣기도 가능함
선택, 텍스트, 벡터와 브러시
선택 도구 는 사각형/타원형 선택, 올가미, Magic Wand부터 Quick Selection, Object Selection, Select Subject까지 지원함
Select and Mask로 미세한 경계를 다듬고, 페더링, 확대/축소, 매끄럽게 처리, 유사 영역 확장, 재선택을 수행할 수 있음
선택 영역을 레이어 마스크, 벡터 경로, 도형으로 변환할 수 있으며, 스마트 선택은 클라우드나 계정 없이 로컬 에서 실행됨
텍스트 편집 은 캔버스 위에서 포인트 텍스트와 문단 텍스트를 직접 수정하는 방식임
글꼴, 굵기, 크기, 행간, 자간, 정렬, 색상을 제어할 수 있음
텍스트 레이어는 편집 가능한 상태를 유지하고 레이어 스타일을 적용할 수 있으며, PSD로 저장했다 다시 열 때도 편집 가능성을 유지함
벡터 도형 은 사각형, 타원, 삼각형, 다각형, 선과 Pen 도구를 제공하며, 해상도 독립적인 도형 레이어에 그레이디언트 채우기와 점선/정렬된 외곽선을 적용할 수 있음
도형 합치기, 빼기, 교차, 제외 연산과 Paths 패널의 경로 보관, 벡터 마스크, 경로 외곽선/채우기를 지원함
PSD 테스트 코퍼스의 도형 레이어 116개 모두 Photoshop 픽셀과 일치함
브러시 엔진 은 Shape Dynamics, Scattering, Texture, Dual Brush, Color Dynamics, Transfer, Brush Pose, Wet Edges, Build-up, Smoothing을 지원함
Smoothing에는 Pulled String이 포함되며, 펜 압력, 기울기, 회전, 방향으로 동작을 제어함
브러시 프리셋과 선택 영역으로 브러시 정의하기를 제공하고, 브러시 획을 결정론적으로 재생할 수 있음
34개 도구 를 표방하며, 선택/벡터/텍스트 도구 외에도 이동, 자르기, 스포이트, 브러시, 연필, Mixer Brush, 색상 대체, 지우개, Clone Stamp, Healing Brush, Spot Healing 등을 제공함
History Brush, 그레이디언트, Paint Bucket, 흐림, 선명하게, 문지르기, Dodge, Burn, Sponge, Hand, Zoom도 사용할 수 있음
필터, 변형과 일상 작업
필터 대화상자 는 선택 영역을 반영해 캔버스에서 실시간 미리보기를 제공함
흐림 효과는 Gaussian, Box, Motion, Radial, Surface, Smart, Lens, Shape와 Blur Gallery의 Tilt-Shift, Iris, Field, Spin, Path를 지원함
선명하게, Reduce Noise, Twirl/Wave/Ripple/Displace/Shear/Zig Zag 왜곡, Pixelate, Oil Paint/Wind/Extrude 스타일 효과, Clouds/Fibers/Lens Flare/Lighting Effects 렌더링도 제공함
스마트 오브젝트에 적용한 필터는 이후 수정, 숨기기, 순서 변경, 마스킹이 가능함
큰 반경의 흐림 처리 는 모든 코어에서 누적합 기반 박스 필터 패스를 수행하며, 360만 픽셀 이미지의 반경 180 Gaussian 처리가 1초 미만 걸림
Free Transform 은 크기 조절, 회전, 기울이기, 왜곡, 원근 변형을 지원하며, 정확한 90도/180도 회전, 뒤집기, Transform Again도 제공함
레이어, 텍스트, 도형, 마스크와 선택 영역을 함께 변형할 수 있음
전체 작업 이력, Toggle Last State, History Brush를 통해 브러시 획 단위까지 되돌릴 수 있음
일상 편집 기능 에는 Auto Tone/Contrast/Color, Equalize, 이미지/캔버스 크기 변경, Crop/Trim, Reveal All, Fill/Stroke, Copy Merged, Paste in Place가 있음
안내선, 눈금자, 격자, 스냅, Actions 기록/재생과 ⌘K
명령 팔레트도 제공함
Export As 에서 형식, 품질, 투명도, 배율을 지정하고 미리보기와 즉시 계산한 파일 크기를 확인할 수 있음
한 번의 클릭으로 PNG를 내보낼 수 있으며, 어두운 Pro, 밝은 Studio, Classic 테마를 선택할 수 있음
색상 관리와 파일 형식
RGB, Grayscale, CMYK, Lab 문서를 채널당 8/16/32비트로 지원함
비트 깊이와 색상 모델을 런타임 데이터로 처리해 모든 도구가 모든 비트 깊이에서 동작하도록 설계함
순수 Rust ICC 색상 관리 는 내장 프로파일, 프로파일 할당/변환, 네 가지 렌더링 인텐트와 검은점 보정을 지원함
GPU에서 소프트 프루핑과 색역 경고를 처리함
PSD/PSB와 레이어 TIFF 를 읽고 쓸 수 있으며, TIFF 내부 Photoshop 레이어 데이터는 두 바이트 순서 모두 처리함
평면 이미지 형식으로 PNG, JPEG, TIFF, WebP, GIF, BMP, TGA, ICO, QOI, PNM, OpenEXR, Radiance HDR, AVIF 와 자체 .pcraft
형식을 지원함
WebP는 손실/무손실을 지원하며, 8/16/32비트 읽기와 쓰기를 대칭적으로 구현함
iPhone/Mac의 HEIC는 읽기만 지원하며, 공식 빌드에 포함되고 직접 빌드할 때는 선택적 heif
기능으로 활성화할 수 있음
PSD 호환성의 성과와 경계
PSD 지원은 독립 크레이트 로 구현했으며, Adobe 공개 명세와 실제 파일 코퍼스를 기반으로 검증함
문서를 열고 재저장했을 때 psd-tools 309개 중 307개 , 혼합 ag-psd/psd-tools 세트 170개 중 169개에서 렌더링 결과가 유지됨
아직 문서 모델에 구현하지 않은 원시 블록, 디스크립터, 추가 데이터는 버리지 않고 보존함
앱은 이미지 리소스, 레이어 레코드와 합성 이미지를 다시 작성하므로 원본과 바이트 단위로 동일하지는 않음
문서 모델을 거치지 않고 파싱/쓰기만 수행하는 독립 photocraft-psd
크레이트는 파싱 가능한 모든 코퍼스 파일을 바이트 단위로 재현함
합성 결과 검증기 는 PhotoCraft 렌더링과 Photoshop이 저장한 병합 이미지를 비교함
Classic/Perceptual/Linear 그레이디언트 보간, 레이어 효과, 도형 외곽선, 클리핑, 채우기 불투명도를 검증함
PSB, 16/32비트, CMYK와 Lab 문서를 네이티브로 열 수 있음
에이전트 자동화와 내부 구조
모든 메뉴, 도구, 대화상자는 500개 이상 명령을 담은 단일 레지스트리 를 사용함
UI, CLI, JSON 제어 채널과 MCP 서버가 같은 명령을 호출하므로 스크립트와 AI 에이전트도 같은 편집 엔진을 구동할 수 있음
헤드리스 열기/편집/저장, 폴더 단위 작업 목록 일괄 적용, 헤드리스 또는 실행 중인 앱과 연결한 MCP 제어를 지원함
데스크톱 앱의 인증된 루프백 전용 제어 채널 은 UI 상태 조회, 포인터 이벤트를 통한 도구 조작, 오프스크린 스크린샷 촬영을 지원함
README의 모든 이미지는 이 방식으로 렌더링했으며, 세부 규약은 제어 프로토콜 문서 에 있음
엔진 우선 구조 는 순수 데이터 문서 모델과 명령 엔진 위에 얇은 egui UI를 올리며, 24개 크레이트의 계층 관계를 빌드 시점에 강제함
CPU/GPU 이중 합성기 를 서로 비교해 검증함
CPU 합성기가 기준 결과를 제공하고, wgpu 합성기가 Metal, Vulkan, DX12, WebGPU를 통해 캔버스를 GPU에 표시함
256×256 희소 타일과 쓰기 시 복사 로 실행 취소 비용과 큰 캔버스의 부담을 줄이며, 효과 맵은 레이어 상태별로 캐싱함
엔진과 UI 전체를 WebAssembly 로 컴파일해 브라우저에서 실행할 수 있음
검증, 문서와 현재 한계
1,700개 이상 테스트 가 PSD 저장/재열기, 합성 데이터 생성기, 합성 결과 검증, 여러 비트 깊이 검사를 포함함
실제 파일 테스트에는 자체 Photoshop 기준 PSD를 담은 photocraft-corpus 와 psd-tools, ag-psd, PngSuite를 사용함
코퍼스 버전을 고정하고 SHA-256으로 검증하며, 절차는 개발 문서 에 있음
현재 초기 알파 이므로 Photoshop의 많은 기능이 어떤 형태로든 존재하더라도 전문 작업용 대체재로 볼 수는 없음
주요 공백은 AI/생성형 기능, 약 20개 미구현 도구, 타이포그래피와 전문 작업 흐름의 깊이, 플러그인 호환성임
모든 Photoshop 메뉴를 명령에 연결했다는 기능 대응표 는 연결 여부이지 실제 동작의 동등성을 측정한 것이 아님
항목별 현황과 향후 계획은 로드맵의 호환성 평가 에 있음
개발, 아키텍처, 자동화, 형식 문서는 PhotoCraft 문서집 에서 관리함
보안 아키텍처, 위협 모델링, 파서 강화, 퍼징과 취약점 신고는 보안 문서 와 보안 정책 을 따름
라이선스와 프로젝트 범위
PhotoCraft는 ArtCraft 팀의 Crafting Apps 중 하나로, 각 앱은 처음부터 Rust로 작성한 독립 실행형 무료 오픈소스 창작 도구임
코드는 MIT 또는 Apache-2.0 중 선택할 수 있는 이중 라이선스임
번들 글꼴, 아이콘, 이미지와 기타 자산에는 각각 별도 오픈 라이선스가 적용됨
ArtCraft 이름과 로고는 코드 라이선스에 포함되지 않는 상표이며, 포크와 수정 버전에서는 제거해야 함
Adobe와 무관한 독립 프로젝트 로, Adobe의 후원이나 승인을 받지 않음
댓글과 토론