Generate srcset images for a variety of resolutions from OCaml
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 81 lines 1.7 kB view raw view rendered
1# srcsetter 2 3Responsive image generation for HTML srcset attributes. 4 5## Overview 6 7Srcsetter processes a directory of images and outputs responsive variants 8suitable for embedding as `<img srcset>` tags in websites. It uses ImageMagick 9for image processing and outputs WebP format. 10 11## Packages 12 13- **srcsetter** - Core library for image entry management 14- **srcsetter-cmd** - CLI tool for batch processing 15 16## Installation 17 18``` 19opam install srcsetter # Library only 20opam install srcsetter-cmd # CLI tool (includes library) 21``` 22 23## Usage 24 25### Library 26 27```ocaml 28(* Load entries from JSON *) 29match Srcsetter.list_of_json json_string with 30| Ok entries -> 31 List.iter (fun entry -> 32 let name = Srcsetter.name entry in 33 let (w, h) = Srcsetter.dims entry in 34 Printf.printf "%s: %dx%d\n" name w h; 35 (* Access variants *) 36 Srcsetter.MS.iter (fun variant_name (vw, vh) -> 37 Printf.printf " %s: %dx%d\n" variant_name vw vh 38 ) (Srcsetter.variants entry) 39 ) entries 40| Error msg -> Printf.printf "Error: %s\n" msg 41``` 42 43### CLI 44 45```bash 46srcsetter process input_dir/ output_dir/ 47``` 48 49## Image Entry Structure 50 51Each entry tracks: 52- **name** - Output filename (e.g., `photo.webp`) 53- **slug** - URL-safe identifier 54- **origin** - Original source file path 55- **dims** - Base image dimensions (width, height) 56- **variants** - Map of variant filenames to dimensions 57 58## JSON Format 59 60```json 61[ 62 { 63 "name": "photo.webp", 64 "slug": "photo", 65 "origin": "photos/DSC_1234.jpg", 66 "dims": [1920, 1080], 67 "variants": { 68 "photo-640.webp": [640, 360], 69 "photo-1280.webp": [1280, 720] 70 } 71 } 72] 73``` 74 75## Requirements 76 77- ImageMagick CLI tools 78 79## License 80 81ISC