# srcsetter Responsive image generation for HTML srcset attributes. ## Overview Srcsetter processes a directory of images and outputs responsive variants suitable for embedding as `` tags in websites. It uses ImageMagick for image processing and outputs WebP format. ## Packages - **srcsetter** - Core library for image entry management - **srcsetter-cmd** - CLI tool for batch processing ## Installation ``` opam install srcsetter # Library only opam install srcsetter-cmd # CLI tool (includes library) ``` ## Usage ### Library ```ocaml (* Load entries from JSON *) match Srcsetter.list_of_json json_string with | Ok entries -> List.iter (fun entry -> let name = Srcsetter.name entry in let (w, h) = Srcsetter.dims entry in Printf.printf "%s: %dx%d\n" name w h; (* Access variants *) Srcsetter.MS.iter (fun variant_name (vw, vh) -> Printf.printf " %s: %dx%d\n" variant_name vw vh ) (Srcsetter.variants entry) ) entries | Error msg -> Printf.printf "Error: %s\n" msg ``` ### CLI ```bash srcsetter process input_dir/ output_dir/ ``` ## Image Entry Structure Each entry tracks: - **name** - Output filename (e.g., `photo.webp`) - **slug** - URL-safe identifier - **origin** - Original source file path - **dims** - Base image dimensions (width, height) - **variants** - Map of variant filenames to dimensions ## JSON Format ```json [ { "name": "photo.webp", "slug": "photo", "origin": "photos/DSC_1234.jpg", "dims": [1920, 1080], "variants": { "photo-640.webp": [640, 360], "photo-1280.webp": [1280, 720] } } ] ``` ## Requirements - ImageMagick CLI tools ## License ISC