# sixlabors/imagesharp architecture

> Architecture diagram of the GitHub repository sixlabors/imagesharp, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sixlabors/imagesharp
- Repository: https://github.com/sixlabors/imagesharp

## Overview

ImageSharp is a managed .NET 2D image and graphics library. Its user-facing workflow is to load or create an image, process it, then encode or save it; format detection and codec selection support that workflow. The tree also shows broad format coverage and color-profile conversion, while sampled sources expose configuration, format registration, resizing, and AV1 internals. Several workflow links are documented only at a high level, so those are marked dashed; source excerpts do not establish the full public API call chain.

Main entry points: [`src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs`](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs) (Resize Worker), [`src/ImageSharp/Image.cs`](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Image.cs) (Image API), [`src/ImageSharp/Processing/DefaultImageProcessorContext{TPixel}.cs`](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Processing/DefaultImageProcessorContext%7BTPixel%7D.cs) (Processor Context), [`src/ImageSharp/Configuration.cs`](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Configuration.cs) (Configuration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Image API"]
  node_image_api["Image API<br/>[Image.cs]"]
  node_configuration["Configuration<br/>[Configuration.cs]"]
  node_memory["Memory Management"]
end

subgraph group_formats["Image Formats"]
  node_format_manager["Format Manager"]
  node_format_codecs["Format Codecs"]
  node_heif_parser["HEIF Parsing"]
  node_av1_codec["AV1 Codec"]
  node_av1_search["AV1 Motion Search"]
  node_av1_mv_costs["Motion Vector Costs"]
  node_av1_vectors["Motion Vectors<br/>[Av1MotionVector.cs]"]
end

subgraph group_processing["Processing"]
  node_processing_context["Processor Context"]
  node_resize["Resize Worker<br/>[ResizeWorker.cs]"]
  node_geometry["Image Geometry<br/>[Rectangle.cs]"]
  node_size["Image Size<br/>[Size.cs]"]
  node_numerics["Pixel Numerics<br/>[Numerics.cs]"]
end

subgraph group_color["Color and Pixels"]
  node_color_profiles["Color Profiles"]
  node_color_conversion["Color Conversion"]
end

node_user(("Application"))

node_user -.->|"uses"| node_image_api
node_image_api -.->|"selects formats"| node_format_manager
node_format_manager -->|"registers codecs"| node_format_codecs
node_configuration -->|"configures formats"| node_format_codecs
node_heif_parser -->|"parses sequence"| node_av1_codec
node_av1_search -->|"measures candidates"| node_av1_mv_costs
node_av1_mv_costs -->|"scores vectors"| node_av1_vectors
node_image_api -.->|"processes images"| node_processing_context
node_processing_context -->|"dispatches processing"| node_resize
node_resize -->|"uses regions"| node_geometry
node_resize -->|"uses dimensions"| node_size
node_resize -->|"uses math"| node_numerics
node_resize -->|"reads settings"| node_configuration
node_image_api -.->|"converts colors"| node_color_profiles
node_color_profiles -.->|"uses transforms"| node_color_conversion
node_processing_context -->|"reads settings"| node_configuration
node_resize -.->|"allocates buffers"| node_memory

click node_image_api "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Image.cs"
click node_configuration "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Configuration.cs"
click node_format_manager "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Formats/ImageFormatManager.cs"
click node_format_codecs "https://github.com/sixlabors/imagesharp/tree/main/src/ImageSharp/Formats"
click node_heif_parser "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Formats/Heif/HeifSequenceParser.cs"
click node_av1_codec "https://github.com/sixlabors/imagesharp/tree/main/src/ImageSharp/Formats/Heif/Av1"
click node_av1_search "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Formats/Heif/Av1/Motion/Av1MotionSearchBase.cs"
click node_av1_mv_costs "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Formats/Heif/Av1/Entropy/Av1MotionVectorCosts.cs"
click node_av1_vectors "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Formats/Heif/Av1/Motion/Av1MotionVector.cs"
click node_processing_context "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Processing/DefaultImageProcessorContext%7BTPixel%7D.cs"
click node_resize "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs"
click node_geometry "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Primitives/Rectangle.cs"
click node_size "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Primitives/Size.cs"
click node_numerics "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Common/Helpers/Numerics.cs"
click node_color_profiles "https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/ColorProfiles/ColorProfileConverter.cs"
click node_memory "https://github.com/sixlabors/imagesharp/tree/main/src/ImageSharp/Memory"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_image_api,node_configuration,node_memory toneBlue
class node_format_manager,node_format_codecs,node_heif_parser,node_av1_codec,node_av1_search,node_av1_mv_costs,node_av1_vectors toneAmber
class node_processing_context,node_resize,node_geometry,node_size,node_numerics toneMint
class node_color_profiles,node_color_conversion toneRose
class node_user toneIndigo
```

## Components

### Image API

- [Image API](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Image.cs): `src/ImageSharp/Image.cs`
- [Configuration](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Configuration.cs): `src/ImageSharp/Configuration.cs`
- [Memory Management](https://github.com/sixlabors/imagesharp/tree/main/src/ImageSharp/Memory): `src/ImageSharp/Memory`

### Image Formats

- [Format Manager](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Formats/ImageFormatManager.cs): `src/ImageSharp/Formats/ImageFormatManager.cs`
- [Format Codecs](https://github.com/sixlabors/imagesharp/tree/main/src/ImageSharp/Formats): `src/ImageSharp/Formats`
- [HEIF Parsing](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Formats/Heif/HeifSequenceParser.cs): `src/ImageSharp/Formats/Heif/HeifSequenceParser.cs`
- [AV1 Codec](https://github.com/sixlabors/imagesharp/tree/main/src/ImageSharp/Formats/Heif/Av1): `src/ImageSharp/Formats/Heif/Av1`
- [AV1 Motion Search](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Formats/Heif/Av1/Motion/Av1MotionSearchBase.cs): `src/ImageSharp/Formats/Heif/Av1/Motion/Av1MotionSearchBase.cs`
- [Motion Vector Costs](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Formats/Heif/Av1/Entropy/Av1MotionVectorCosts.cs): `src/ImageSharp/Formats/Heif/Av1/Entropy/Av1MotionVectorCosts.cs`
- [Motion Vectors](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Formats/Heif/Av1/Motion/Av1MotionVector.cs): `src/ImageSharp/Formats/Heif/Av1/Motion/Av1MotionVector.cs`

### Processing

- [Processor Context](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Processing/DefaultImageProcessorContext%7BTPixel%7D.cs): `src/ImageSharp/Processing/DefaultImageProcessorContext{TPixel}.cs`
- [Resize Worker](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs): `src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs`
- [Image Geometry](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Primitives/Rectangle.cs): `src/ImageSharp/Primitives/Rectangle.cs`
- [Image Size](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Primitives/Size.cs): `src/ImageSharp/Primitives/Size.cs`
- [Pixel Numerics](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/Common/Helpers/Numerics.cs): `src/ImageSharp/Common/Helpers/Numerics.cs`

### Color and Pixels

- [Color Profiles](https://github.com/sixlabors/imagesharp/blob/main/src/ImageSharp/ColorProfiles/ColorProfileConverter.cs): `src/ImageSharp/ColorProfiles/ColorProfileConverter.cs`
- **Color Conversion**

### Other components

- **Application**

## Connections

- Application → Image API: uses (evidence: `README.md`)
- Image API → Format Manager: selects formats (evidence: `src/ImageSharp/Formats/ImageFormatManager.cs`)
- Format Manager → Format Codecs: registers codecs (evidence: `src/ImageSharp/Formats/ImageFormatManager.cs`)
- Configuration → Format Codecs: configures formats (evidence: `src/ImageSharp/Configuration.cs`)
- HEIF Parsing → AV1 Codec: parses sequence (evidence: `src/ImageSharp/Formats/Heif/HeifSequenceParser.cs`)
- AV1 Motion Search → Motion Vector Costs: measures candidates (evidence: `src/ImageSharp/Formats/Heif/Av1/Motion/Av1MotionSearchBase.cs`)
- Motion Vector Costs → Motion Vectors: scores vectors (evidence: `src/ImageSharp/Formats/Heif/Av1/Entropy/Av1MotionVectorCosts.cs`)
- Image API → Processor Context: processes images (evidence: `src/ImageSharp/Processing/DefaultImageProcessorContext{TPixel}.cs`)
- Processor Context → Resize Worker: dispatches processing (evidence: `src/ImageSharp/Processing/DefaultImageProcessorContext{TPixel}.cs`)
- Resize Worker → Image Geometry: uses regions (evidence: `src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs`)
- Resize Worker → Image Size: uses dimensions (evidence: `src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs`)
- Resize Worker → Pixel Numerics: uses math (evidence: `src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs`)
- Resize Worker → Configuration: reads settings (evidence: `src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs`)
- Image API → Color Profiles: converts colors
- Color Profiles → Color Conversion: uses transforms
- Processor Context → Configuration: reads settings (evidence: `src/ImageSharp/Processing/DefaultImageProcessorContext{TPixel}.cs`)
- Resize Worker → Memory Management: allocates buffers (evidence: `src/ImageSharp/Processing/Processors/Transforms/Resize/ResizeWorker.cs`)
