Polotno
Design Format

ImageElement

Documentation for the ImageElement type in the Polotno design JSON Schema.

Type Information

Base Type: object

Properties

PropertyTypeDescription
idstringUnique identifier for the element.
type"image"No description provided
namestringDisplay name for the element.
customunknownCustom data attached to the element.
xnumberX position in pixels.
ynumberY position in pixels.
widthnumberWidth in pixels.
heightnumberHeight in pixels.
rotationnumberRotation angle in degrees.
opacitynumberOpacity level (0-1).
animationsArray<Animation>Animation configurations.
blurEnabledbooleanWhether blur effect is enabled.
blurRadiusnumberBlur radius in pixels.
brightnessEnabledbooleanWhether brightness effect is enabled.
brightnessnumberBrightness level (-1 to 1).
sepiaEnabledbooleanWhether sepia effect is enabled.
grayscaleEnabledbooleanWhether grayscale effect is enabled.
filtersobjectApplied image filters keyed by filter name.
shadowEnabledbooleanWhether shadow is enabled.
shadowBlurnumberShadow blur radius in pixels.
shadowOffsetXnumberShadow horizontal offset in pixels.
shadowOffsetYnumberShadow vertical offset in pixels.
shadowColorstringShadow color.
shadowOpacitynumberShadow opacity (0-1).
visiblebooleanWhether the element is visible.
draggablebooleanWhether the element can be dragged.
resizablebooleanWhether the element can be resized.
selectablebooleanWhether the element can be selected.
removablebooleanWhether the element can be removed.
contentEditablebooleanWhether the element content can be edited.
styleEditablebooleanWhether the element style can be edited.
alwaysOnTopbooleanWhether the element stays on top of others.
showInExportbooleanWhether the element appears in exports.
srcstringURL or data URI of the image file.
cropXnumberCrop X offset as a fraction (0-1).
cropYnumberCrop Y offset as a fraction (0-1).
cropWidthnumberCrop width as a fraction (0-1).
cropHeightnumberCrop height as a fraction (0-1).
cornerRadiusnumberCorner radius in pixels.
flipXbooleanWhether the image is flipped horizontally.
flipYbooleanWhether the image is flipped vertically.
clipSrcstringURL or data URI for a clipping mask.
borderColorstringBorder color.
borderSizenumberBorder width in pixels.
keepRatiobooleanWhether to maintain aspect ratio when resizing.
stretchEnabledbooleanWhether stretch mode is enabled.

JSON Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the element."
    },
    "type": {
      "type": "string",
      "const": "image"
    },
    "name": {
      "default": "",
      "description": "Display name for the element.",
      "type": "string"
    },
    "custom": {
      "description": "Custom data attached to the element."
    },
    "x": {
      "default": 0,
      "description": "X position in pixels.",
      "type": "number"
    },
    "y": {
      "default": 0,
      "description": "Y position in pixels.",
      "type": "number"
    },
    "width": {
      "default": 100,
      "description": "Width in pixels.",
      "type": "number"
    },
    "height": {
      "default": 100,
      "description": "Height in pixels.",
      "type": "number"
    },
    "rotation": {
      "default": 0,
      "description": "Rotation angle in degrees.",
      "type": "number"
    },
    "opacity": {
      "default": 1,
      "description": "Opacity level (0-1).",
      "type": "number"
    },
    "animations": {
      "default": [],
      "description": "Animation configurations.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "delay": {
            "default": 0,
            "description": "Delay before the animation starts, in milliseconds.",
            "type": "number"
          },
          "duration": {
            "default": 500,
            "description": "Animation duration in milliseconds.",
            "type": "number"
          },
          "enabled": {
            "default": true,
            "description": "Whether the animation is enabled.",
            "type": "boolean"
          },
          "type": {
            "type": "string",
            "enum": [
              "enter",
              "exit",
              "loop"
            ],
            "description": "Animation phase."
          },
          "name": {
            "default": "none",
            "description": "Animation name identifier.",
            "type": "string"
          },
          "data": {
            "default": {},
            "description": "Animation-specific data."
          }
        },
        "required": [
          "type"
        ]
      }
    },
    "blurEnabled": {
      "default": false,
      "description": "Whether blur effect is enabled.",
      "type": "boolean"
    },
    "blurRadius": {
      "default": 10,
      "description": "Blur radius in pixels.",
      "type": "number"
    },
    "brightnessEnabled": {
      "default": false,
      "description": "Whether brightness effect is enabled.",
      "type": "boolean"
    },
    "brightness": {
      "default": 0,
      "description": "Brightness level (-1 to 1).",
      "type": "number"
    },
    "sepiaEnabled": {
      "default": false,
      "description": "Whether sepia effect is enabled.",
      "type": "boolean"
    },
    "grayscaleEnabled": {
      "default": false,
      "description": "Whether grayscale effect is enabled.",
      "type": "boolean"
    },
    "filters": {
      "default": {},
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "object",
        "properties": {
          "intensity": {
            "default": 1,
            "description": "Filter intensity (-1 to 1).",
            "type": "number"
          }
        }
      },
      "description": "Applied image filters keyed by filter name."
    },
    "shadowEnabled": {
      "default": false,
      "description": "Whether shadow is enabled.",
      "type": "boolean"
    },
    "shadowBlur": {
      "default": 5,
      "description": "Shadow blur radius in pixels.",
      "type": "number"
    },
    "shadowOffsetX": {
      "default": 0,
      "description": "Shadow horizontal offset in pixels.",
      "type": "number"
    },
    "shadowOffsetY": {
      "default": 0,
      "description": "Shadow vertical offset in pixels.",
      "type": "number"
    },
    "shadowColor": {
      "default": "black",
      "description": "Shadow color.",
      "type": "string"
    },
    "shadowOpacity": {
      "default": 1,
      "description": "Shadow opacity (0-1).",
      "type": "number"
    },
    "visible": {
      "default": true,
      "description": "Whether the element is visible.",
      "type": "boolean"
    },
    "draggable": {
      "default": true,
      "description": "Whether the element can be dragged.",
      "type": "boolean"
    },
    "resizable": {
      "default": true,
      "description": "Whether the element can be resized.",
      "type": "boolean"
    },
    "selectable": {
      "default": true,
      "description": "Whether the element can be selected.",
      "type": "boolean"
    },
    "removable": {
      "default": true,
      "description": "Whether the element can be removed.",
      "type": "boolean"
    },
    "contentEditable": {
      "default": true,
      "description": "Whether the element content can be edited.",
      "type": "boolean"
    },
    "styleEditable": {
      "default": true,
      "description": "Whether the element style can be edited.",
      "type": "boolean"
    },
    "alwaysOnTop": {
      "default": false,
      "description": "Whether the element stays on top of others.",
      "type": "boolean"
    },
    "showInExport": {
      "default": true,
      "description": "Whether the element appears in exports.",
      "type": "boolean"
    },
    "src": {
      "default": "",
      "description": "URL or data URI of the image file.",
      "type": "string"
    },
    "cropX": {
      "default": 0,
      "description": "Crop X offset as a fraction (0-1).",
      "type": "number"
    },
    "cropY": {
      "default": 0,
      "description": "Crop Y offset as a fraction (0-1).",
      "type": "number"
    },
    "cropWidth": {
      "default": 1,
      "description": "Crop width as a fraction (0-1).",
      "type": "number"
    },
    "cropHeight": {
      "default": 1,
      "description": "Crop height as a fraction (0-1).",
      "type": "number"
    },
    "cornerRadius": {
      "default": 0,
      "description": "Corner radius in pixels.",
      "type": "number"
    },
    "flipX": {
      "default": false,
      "description": "Whether the image is flipped horizontally.",
      "type": "boolean"
    },
    "flipY": {
      "default": false,
      "description": "Whether the image is flipped vertically.",
      "type": "boolean"
    },
    "clipSrc": {
      "default": "",
      "description": "URL or data URI for a clipping mask.",
      "type": "string"
    },
    "borderColor": {
      "default": "black",
      "description": "Border color.",
      "type": "string"
    },
    "borderSize": {
      "default": 0,
      "description": "Border width in pixels.",
      "type": "number"
    },
    "keepRatio": {
      "default": false,
      "description": "Whether to maintain aspect ratio when resizing.",
      "type": "boolean"
    },
    "stretchEnabled": {
      "default": false,
      "description": "Whether stretch mode is enabled.",
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "type"
  ]
}

On this page