Samples/SixLabors.Samples.ImageSharp at main · SixLabors/Samples

GitHub

Runnable ImageSharp samples that load real image files from assets/imagesharp and write generated files to output/imagesharp.

Run the project from the repository root:

dotnet run --project SixLabors.Samples.ImageSharp\SixLabors.Samples.ImageSharp.csproj -c ReleaseSamples

ResponsiveImageSample

Shows a typical web image pipeline:

loads one landscape JPEG

applies AutoOrient() before resize operations

crops a 16:9 hero image with ResizeMode.Crop

removes EXIF metadata from the exported hero image

writes the same processed pixels as JPEG and WebP

writes a square PNG thumbnail

Outputs:

responsive-hero.jpg

responsive-hero.webp

responsive-thumbnail.png

MetadataAndFormatConversionSample

Shows how to inspect an encoded image before decoding all pixels:

uses Image.Identify(...) to read size information

uses Image.DetectFormat(...) to identify the source format

reads pixel depth, alpha representation, bounds, frame count, and resolution from ImageInfo

loads, orients, resizes, annotates the image with a metadata HUD, and converts the JPEG source to PNG

Outputs:

metadata-converted.png

ThumbnailContactSheetSample

Shows image composition with a fixed layout:

loads landscape and portrait inputs

normalizes orientation

crops each source to a uniform tile size

draws every tile into one larger image

Output:

contact-sheet.jpg

PixelRowsSample

Shows direct pixel generation with ProcessPixelRows(...):

creates a blank Image<Rgba32>

maps each pixel to the Mandelbrot complex plane

writes each generated color directly into the row span

This is intentionally not a grayscale, histogram, or color-conversion sample; ImageSharp already provides higher-level processors for those workflows.

Output:

mandelbrot-fractal.png

AvatarAndMaskingSample

Shows ImageSharp.Drawing clipping with a real image:

crops a portrait into a square avatar

builds a rounded clip shape with RoundedRectanglePolygon

uses DrawingCanvas.Save(..., clipPath) to clip subsequent drawing

draws the avatar into a transparent image so the clipped corners remain transparent

Output:

avatar-rounded.png

PolygonClippingSample

Shows boolean path clipping with ImageSharp.Drawing:

builds a subject path and a clipping path

groups symmetric operations (Intersection, Union, and Xor) separately from Difference

labels each operation with both its name and operator form, such as Union: A | B

shows both Difference: A - B and Difference: B - A because Difference depends on operand order

draws the clipped result with a photo fill

overlays the original paths so the operation can be compared visually

Output:

polygon-clipping.png

TextMeasurementVisualizerSample

Shows how text measurement maps to drawn glyphs:

measures the same text in separate panels

prepares the text once with TextBlock

measures and renders that prepared block instead of shaping text twice

fills the logical advance, glyph bounds, and renderable bounds regions

labels renderable bounds as the union of advance and bounds

keeps each measurement separate so the regions can be compared without overlapping outlines

Output:

text-measurement-visualizer.png