Search documentation of phoenix_kit

# PhoenixKit.Modules.Storage.Dimension (phoenix_kit v1.7.87)

Copy Markdown View Source

Schema for dimension presets for automatic file variant generation.

Dimensions define target sizes and quality settings for automatically generating different versions of uploaded images and videos.

## Fields

- `name` - Unique name for this dimension (e.g., "thumbnail", "medium")
- `width` - Target width in pixels (nullable = maintain aspect ratio)
- `height` - Target height in pixels (nullable = maintain aspect ratio)
- `quality` - Quality setting (1-100 for images, CRF 0-51 for videos)
- `format` - Output format override (nullable = preserve original)
- `applies_to` - What this dimension applies to: "image", "video", or "both"
- `enabled` - Whether this dimension is active
- `order` - Display order in admin interface

## Quality Settings

### Images (JPEG, WebP, PNG)

- Range: 1-100
- 85 = Good quality (default)
- 95 = High quality
- 70 = Medium quality

### Videos (MP4, WebM)

- Range: 0-51 (CRF - Constant Rate Factor)
- Lower = Higher quality
- 23 = Good quality (default)
- 18 = High quality
- 28 = Medium quality

## Examples

    # Image thumbnail
    %Dimension{
      name: "thumbnail",
      width: 150,
      height: 150,
      quality: 85,
      format: "jpg",
      applies_to: "image",
      enabled: true,
      order: 1
    }

    # Video 720p variant
    %Dimension{
      name: "720p",
      width: 1280,
      height: 720,
      quality: 23,
      format: "mp4",
      applies_to: "video",
      enabled: true,
      order: 2
    }

    # Responsive image (maintain aspect ratio)
    %Dimension{
      name: "large",
      width: 1920,
      height: nil,  # Maintain aspect ratio
      quality: 85,
      format: nil,  # Preserve original
      applies_to: "image",
      enabled: true,
      order: 3
    }

## Summary

### Functions

applies_to_images?(arg1)

Returns whether this dimension applies to images.

applies_to_videos?(arg1)

Returns whether this dimension applies to videos.

changeset(dimension, attrs)

Changeset for creating or updating a dimension.

description(dimension)

Returns a human-readable description of this dimension.

preserve_aspect_ratio?(dimension)

Returns whether this dimension preserves aspect ratio.

## Functions

# applies_to_images?(arg1)

Returns whether this dimension applies to images.

# applies_to_videos?(arg1)

Returns whether this dimension applies to videos.

# changeset(dimension, attrs)

Changeset for creating or updating a dimension.

## Required Fields

- `name`
- `applies_to`
- `width` - Required when `maintain_aspect_ratio` is true or false

## Optional Fields

- `height` - Required when `maintain_aspect_ratio` is false (fixed dimensions)
- `maintain_aspect_ratio` - Whether to preserve aspect ratio (default: true)

## Validation Rules

- Name must be unique
- Width must be specified (always required)
- Height must be specified when `maintain_aspect_ratio` is false
- Width and height must be positive integers
- Quality must be between 1-100 for images or 0-51 for videos
- Applies to must be one of: "image", "video", "both"
- Format must be valid if specified
- Order must be >= 0

# description(dimension)

Returns a human-readable description of this dimension.

# preserve_aspect_ratio?(dimension)

Returns whether this dimension preserves aspect ratio.