Import & Ingestion
Local Folder Ingest & Proxy Extraction
HTML5 folder drag-and-drop, client EXIF extraction, and Web Worker WebP proxy generation.
Drag-and-Drop Ingestion Architecture
Photographers can drag an entire folder structure containing thousands of RAW and JPEG files directly into the BestShots upload zone. The client-side ingestion manager recurses directories using the HTML5 File System API while preserving original relative paths.
Client-Side EXIF Parsing
Before proxy upload begins, BestShots reads the EXIF metadata directly in the browser using binary stream headers. This extracts key photographic parameters with zero server round-trips:
- Camera Make & Model: Sony ILCE-7RM5, Canon EOS R6 Mark II, Nikon Z8, etc.
- Exposure Triangle: Shutter speed, f-number (aperture), and ISO sensitivity.
- Optical Profile: Lens model, focal length, and optical stabilization status.
- Timestamp & Orientation: Millisecond capture times for burst grouping and EXIF rotation tags.
Client-Side Web Worker Proxy Pipeline (ADR 0015)
Decoding whole 50-megapixel uncompressed RAW files in browser memory would crash browser tabs. BestShots processes camera RAW files using dedicated background Web Workers:
- Chunked Binary Slicing: Using HTML5
File.slice(), workers inspect only the initial header bytes of local RAW files. The multi-megabyte sensor payload remains untouched on disk. - Embedded Preview Extraction: Extracts the full-resolution preview JPEG packaged within camera RAW containers (
.ARW,.CR3,.NEF,.RAF,.DNG, etc.). - Hardware-Accelerated Decoding: The browser's native
createImageBitmap()decodes the preview on worker threads with zero main-thread UI jank. - Normalized WebP Rendering:
OffscreenCanvasrenders both a standardized 300×300 WebP thumbnail and an optimized 2048px high-resolution inspection proxy in ~500ms. - Direct Cloud Proxy Upload: Only the lightweight WebP proxy is transmitted to Azure Blob Storage, saving over 95% bandwidth and keeping master RAW files on your local drive.