{"service":"Image handler","packUpload":"React UI: npm run dev → packs; API: /api/packs/…, /zip/create, /zip/sessions/{id}/variants (+ items), /zip/download/{id}, POST /api/assets/upload. Legacy: POST /api/upload","imagesFolder":"E:\\inetpub\\wwwroot\\assets.molo.com\\testimages","s3Source":{"bucket":"molo.com","prefix":"molo-style/-pige-troejer-cardigans-maxime-light-retro-/","mode":"GetObject direkte (ingen scan); derefter lokal mappe","auth":"AWS credentials (env/IAM/profil)"},"parameters":{"trim":"bool – fjern whitespace omkring indhold","padding":"int (0–500) – tilføj X px whitespace/kant rundt om billedet","silhouette":"bool – lav siluet (sort figur på hvid baggrund, fylder lidt)","primitive":"int 4–128 – primitiv version: max sidelængde i px (lav kvalitet, meget lille fil)","bgColor":"hex RRGGBB – erstat baggrund (hvid/transparent) med denne farve (fx FF00FF = magenta)","replaceColor":"hex RRGGBB – farve der skal erstattes (bruges med withColor)","withColor":"hex RRGGBB – farve der skal erstatte (fx FF00FF for magenta)","replaceTolerance":"int 0–255 – hvor tæt pixel skal være på replaceColor (0 = præcis, 20 = næsten hvid)","flipH":"bool – spejlvend horisontalt (venstre/højre)","flipV":"bool – spejlvend vertikalt (op/ned)","cropX":"int – crop start X (øverst til venstre)","cropY":"int – crop start Y","cropW":"int – crop bredde (skal angives sammen med cropH)","cropH":"int – crop højde","focalX":"double 0–1 – focal crop: X for centrum (0.5 = midt)","focalY":"double 0–1 – focal crop: Y for centrum (bruges med cropW, cropH)","rotate":"double – rotation i grader (fx 90, 180, -90)","width":"int – max bredde ved resize","height":"int – max højde ved resize","fit":"max|min|fill|stretch|crop – hvordan width/height anvendes (default: max)","quality":"int 1–100 – JPEG-kvalitet (default: 85); ved stackAnim også AVIF lossy-niveau","render":"stack – pack-komposit (kræver pack-indeks + S3); med stackAnim=true leveres animeret AVIF (lag for lag)","stackAnim":"bool – kun med render=stack: AVIF-sekvens (image/avif); kræver libheif AV1-encoder (LibHeif.Native.*)","cutout":"bool – fjern næsten-hvid studiebaggrund (RGB≥0,98→transparent). Ved JPEG flades til hvid uden bgColor; brug format=png eller format=webp for ægte gennemsigtighed.","format":"jpeg | png | webp – outputformat (default jpeg). png/webp beholder alpha efter cutout.","gradStart":"hex RRGGBB – gradient startfarve (kræver gradEnd)","gradEnd":"hex RRGGBB – gradient slutfarve (kræver gradStart); fx lidt mørkere end start for subtil dybde","gradDir":"ltr | rtl | ttb | btt – retning (default ttb: lys top → mørkere bund). Aliaser: left/right/top/bottom"},"examples":["/image/mypic?trim=true","/image/mypic?trim=true&padding=10","/image/mypic?width=450&height=450&fit=max","/image/mypic?cropW=200&cropH=200&width=100","/image/mypic?rotate=90","/image/mypic?focalX=0.5&focalY=0.3&cropW=400&cropH=400","/image/mypic?flipH=true","/image/mypic?flipV=true","/image/mypic?silhouette=true","/image/mypic?silhouette=true&primitive=32","/image/mypic?bgColor=FF00FF","/image/mypic?replaceColor=FFFFFF&withColor=FF00FF&replaceTolerance=25","/image/mypic?cutout=true","/image/mypic?cutout=true&format=webp","/image/mypic?cutout=true&format=png","/image/mypic?cutout=true&gradStart=FFFFFF&gradEnd=E0E0E0&gradDir=ttb","/image/mypic?cutout=true&bgColor=F5F5F5","/vilkårlig/sti/til/fil.jpg?trim=true (samme som /image/… — sidste segment er filnavn)"]}