{
  "product": "Specification (reference)",
  "title": "Image Processing Engine",
  "summary": "Decode, transform and encode images without wrecking them.",
  "category": "engines",
  "entries": [
    {
      "path": [
        "AI",
        "Decode",
        "Common formats"
      ],
      "value": "JPEG, PNG, WebP, AVIF, GIF, SVG",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Decode",
        "EXIF orientation applied"
      ],
      "value": "",
      "status": "yes",
      "note": "the sideways-photo bug"
    },
    {
      "path": [
        "AI",
        "Decode",
        "Colour profile handling"
      ],
      "value": "ICC, sRGB conversion",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Decode",
        "Malformed input rejected without crashing"
      ],
      "value": "",
      "status": "yes",
      "note": "decompression bomb limits"
    },
    {
      "path": [
        "AI",
        "Resize",
        "Fit modes"
      ],
      "value": "cover, contain, fill, inside, outside",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Resize",
        "High-quality resampling"
      ],
      "value": "Lanczos or better",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Resize",
        "Never upscale unless asked"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Transform",
        "Crop, rotate, flip"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Transform",
        "Smart crop toward the subject"
      ],
      "value": "",
      "status": "yes",
      "note": "entropy or face based"
    },
    {
      "path": [
        "AI",
        "Transform",
        "Composite and watermark with alpha"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Encode",
        "Quality and compression settings per format"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Encode",
        "Progressive JPEG and interlaced PNG"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Encode",
        "Strip or preserve metadata explicitly"
      ],
      "value": "",
      "status": "yes",
      "note": "privacy default"
    },
    {
      "path": [
        "AI",
        "Encode",
        "Animated output preserved for GIF and WebP"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Pipeline",
        "Streaming so full images need not be buffered"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Pipeline",
        "Deterministic output for identical input and settings"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    },
    {
      "path": [
        "AI",
        "Performance",
        "Concurrency limit and memory ceiling"
      ],
      "value": "",
      "status": "yes",
      "note": ""
    }
  ]
}
