8000
Skip to content

Repository files navigation

ImagePlayground - visual automation for PowerShell and .NET

ImagePlayground turns scripts and application data into finished visual assets. Process photographs, inspect or remove metadata, create QR codes and barcodes, render charts and dashboards, map systems and organizations, or publish animated terminal and source-to-result stories without opening an image editor.

NuGet package

NuGet version NuGet downloads

PowerShell module

PowerShell Gallery version PowerShell Gallery platforms PowerShell Gallery downloads

Project information

Test .NET Test PowerShell License

Start here: install · quick start · feature guide · PowerShell commands · examples · generated reference

Why ImagePlayground

Automation often ends with something a person must read: a chart in a report, a service map in an incident, a QR code on a device, a sanitized image for publication, or an animated terminal session in documentation. ImagePlayground keeps those results reproducible.

The PowerShell module provides one scripting surface over three reusable .NET owners:

  • ImagePlayground handles image loading, processing, composition, metadata, and file output.
  • ChartForgeX handles charts, visual blocks, canvases, topology, hierarchy, and story rendering.
  • CodeGlyphX handles QR-code and barcode generation and decoding.

PowerShell users install one module. .NET applications reference only the package that owns the capability they need.

See what it produces

These are real outputs generated with the module in this repository.

Social preview canvas generated by ImagePlayground
Canvases and announcement graphics
Compose fixed-size social cards, wallpapers, covers, labels, information tiles, and branded backdrops.
Service topology diagram generated by ImagePlayground
Topology and system maps
Render grouped services, databases, routes, statuses, ports, details, scenarios, and interactive HTML diagrams.
CPU and memory trend chart generated by ImagePlayground
Charts and report visuals
Build business charts, statistical plots, gauges, progress visuals, heatmaps, treemaps, waterfalls, and annotations.
Animated PowerShell terminal story generated by ImagePlayground
Animated terminal stories
Turn authored commands or captured output into SVG, HTML, PNG, GIF, or APNG without executing displayed code.

What ImagePlayground covers

Area What you can produce Start with
Image processing Resized, cropped, rotated, adjusted, blurred, sharpened, converted, compared, merged, watermarked, annotated, or Base64-encoded images Resize-Image, New-ImageCrop, Set-ImageAdjust, ConvertTo-Image
Image composition Thumbnails, avatars, icons, mosaics, grids, animated GIFs, social cards, covers, and wallpapers New-ImageThumbnail, New-ImageAvatar, New-ImageMosaic, New-ImageCanvas
Metadata and provenance EXIF, XMP, IPTC, ICC, C2PA container discovery, direct XMP AI declarations, HEIF information, exports, imports, updates, and controlled removal Get-ImageMetadata, Get-ImageProvenance, Remove-ImageMetadata
QR codes and barcodes General QR content, contact, Wi-Fi, calendar, email, OTP, payment, cryptocurrency, phone, SMS, location, and common barcode workflows New-ImageQRCode, New-ImageQRCodeWiFi, New-ImageBarCode, Get-ImageQRCode
Charts Static or portable chart output from typed PowerShell definitions or native ChartForgeX charts New-ImageChart, New-ImageChartLine, New-ImageChartBar, New-ImageChartOptions
Dashboards and visual blocks Metric cards, lists, tables, timelines, charts, and mixed grids rendered together New-ImageVisualGrid, New-ImageMetricCard, New-ImageTableBlock
Topology and hierarchy Service maps, dependency diagrams, organization charts, grouped nodes, ports, diagnostics, scenarios, and route motion New-ImageTopology, Get-ImageTopologyDiagnostics, New-ImageOrganizationChart
Visual stories Console sessions, source-to-result scenes, declared outcomes, motion cues, watermarks, and portable semantic artifacts New-ImageConsoleStory, New-ImageStory, New-ImageVisualStory, ConvertTo-ImageVisualArtifact

The generated PowerShell reference contains every cmdlet, parameter set, example, input contract, and output contract.

PowerShell and .NET entry points

Task PowerShell .NET owner
Load, manipulate, and save images Get-Image, Save-Image, focused *-Image* commands ImagePlayground.Image, ImagePlayground.ImageHelper
Inspect or remove metadata Get-ImageMetadata, Get-ImageProvenance, Remove-ImageMetadata ImagePlayground.ImageHelper metadata and provenance APIs
Create or decode QR codes and barcodes New-ImageQRCode*, New-ImageBarCode, Get-ImageQRCode, Get-ImageBarCode CodeGlyphX
Build charts New-ImageChart and New-ImageChart* definitions ChartForgeX.Core.Chart
Compose dashboards and canvases New-ImageVisualGrid, New-ImageCanvas, visual-block commands ChartForgeX.VisualBlocks, ChartForgeX.VisualCanvas
Map systems and organizations New-ImageTopology, New-ImageOrganizationChart ChartForgeX topology and hierarchy APIs
Publish console or visual stories New-ImageConsoleStory, New-ImageStory, New-ImageVisualStory ChartForgeX terminal and visual-story APIs
Hand visuals to another workflow ConvertTo-ImageVisualArtifact, Export-ImageVisualArtifact ChartForgeX visual artifacts

Installation

PowerShell

ImagePlayground supports Windows PowerShell 5.1 and PowerShell 7+.

Install-Module -Name ImagePlayground -Scope CurrentUser
Import-Module ImagePlayground

To update an existing installation:

Update-Module -Name ImagePlayground

.NET

Install the core package for image loading and processing:

dotnet add package ImagePlayground

Add the owning package when the application also needs charts, topology, QR codes, or barcodes:

dotnet add package ChartForgeX
dotnet add package CodeGlyphX

The ImagePlayground .NET package does not wrap ChartForgeX or CodeGlyphX. That aggregation belongs to the PowerShell module.

Quick start

Process and publish an image

Resize-Image `
    -FilePath '.\photo.jpg' `
    -OutputPath '.\photo-small.jpg' `
    -Width 1200

Add-ImageWatermark `
    -FilePath '.\photo-small.jpg' `
    -OutputPath '.\photo-published.jpg' `
    -WatermarkPath '.\logo.png' `
    -Placement BottomRight `
    -Opacity 0.7

Get-ImageMetadata -FilePath '.\photo-published.jpg'

Create and verify a QR code

New-ImageQRCode `
    -Content 'https://evotec.xyz' `
    -FilePath '.\evotec-qr.png'

$decoded = Get-ImageQRCode -FilePath '.\evotec-qr.png'
$decoded.Text

Render a chart

New-ImageChart {
    New-ImageChartBar -Name 'Healthy' -Value 18 -Color MediumSeaGreen
    New-ImageChartBar -Name 'Warning' -Value 3 -Color Orange
    New-ImageChartBar -Name 'Failed' -Value 1 -Color IndianRed
} -FilePath '.\service-health.png' -Width 720 -Height 420 -ShowGrid

Resize an image from .NET

using ImagePlayground;

ImageHelper.Resize(
    filePath: "photo.jpg",
    outFilePath: "photo-small.jpg",
    width: 1200,
    height: 1200,
    keepAspectRatio: true);

Image processing and composition

ImagePlayground uses SixLabors.ImageSharp for the main image engine. The primary package does not depend on System.Drawing.

Focused commands for one operation

Set-ImageAdjust `
    -FilePath '.\photo.jpg' `
    -OutputPath '.\photo-balanced.jpg' `
    -Brightness 1.05 `
    -Contrast 1.1 `
    -Saturation 1.08

New-ImageCrop `
    -FilePath '.\photo-balanced.jpg' `
    -OutputPath '.\photo-square.jpg' `
    -X 120 -Y 40 -Width 900 -Height 900

ConvertTo-Image `
    -FilePath '.\photo-square.jpg' `
    -OutputPath '.\photo-square.webp' `
    -Quality 85

The destination extension selects the output format. JPEG and WebP support -Quality; PNG supports -CompressionLevel.

Keep an image open for several edits

$image = Get-Image -FilePath '.\photo.jpg'
try {
    $image.Resize(1200, 1200, $true)
    $image.Watermark(
        'Internal',
        [ImagePlayground.WatermarkPlacement]::BottomRight,
        [SixLabors.ImageSharp.Color]::White,
        28)

    Save-Image -Image $image -FilePath '.\photo-watermarked.jpg' -Quality 88
} finally {
    $image.Dispose()
}

Compare, combine, and derive images

Need Commands
Draw text or a wrapped text box Add-ImageText, Add-ImageTextBox
Apply an image watermark Add-ImageWatermark
Compare two images or save a difference mask Compare-Image
Merge images Merge-Image
Build contact sheets or tiled output New-ImageGrid, New-ImageMosaic
Create avatars, thumbnails, or icons New-ImageAvatar, New-ImageThumbnail, New-ImageIcon
Build an animation from existing frames New-ImageGif
Move image data through text workflows ConvertTo-ImageBase64, ConvertFrom-ImageBase64
Source photograph
Source
Photograph after text and watermark composition
Scripted text and watermark output

See the focused scripts under Examples/Images.*.ps1 and the .NET samples in Sources/ImagePlayground.Examples.

Metadata, EXIF, HEIF, and provenance

Metadata is part of the publishing workflow, not an afterthought. ImagePlayground can inspect supported profiles, export metadata for review, update selected values, and remove selected families without hiding what happened.

$metadata = Get-ImageMetadata -FilePath '.\photo.jpg'
$provenance = Get-ImageProvenance -FilePath '.\photo.jpg'

$metadata
$provenance

Export-ImageMetadata `
    -FilePath '.\photo.jpg' `
    -OutputPath '.\photo-metadata.json'

Remove-ImageMetadata `
    -FilePath '.\photo.jpg' `
    -OutputPath '.\photo-public.jpg' `
    -MetadataType Exif, Xmp `
    -PassThru

JPEG and PNG metadata removal preserves compressed pixel data where the format permits it. HEIF and HEIC cleanup is limited to EXIF and XMP.

Get-ImageProvenance discovers embedded C2PA containers and direct XMP generative-AI declarations. It does not validate C2PA signatures, trust chains, asset hashes, or the active claim. Use a conforming C2PA validator when cryptographic provenance matters.

HEIF-specific commands can inspect container information and read, set, or remove XMP packets without presenting HEIF pixel decoding as a broader image-editing guarantee.

QR codes and barcodes

The PowerShell module exposes CodeGlyphX through task-oriented commands. Create a code, save it, and read the final image back in the same workflow.

Contact QR code
Contact
Wi-Fi QR code
Wi-Fi
EAN-13 barcode
Barcode

Typed QR payloads

Payload Command
Contact card New-ImageQRContact
Wi-Fi network New-ImageQRCodeWiFi
Calendar event New-ImageQRCodeCalendar
Email draft New-ImageQRCodeEmail
One-time password enrollment New-ImageQRCodeOtp
Phone number or SMS New-ImageQRCodePhoneNumber, New-ImageQRCodeSms
Geographic location New-ImageQRCodeGeoLocation
Bitcoin or Monero payment New-ImageQRCodeBitcoin, New-ImageQRCodeMonero
Girocode, BezahlCode, Swiss QR, or Slovenian UPN QR New-ImageQRCodeGirocode, New-ImageQRCodeBezahlCode, New-ImageQRCodeSwiss, New-ImageQRCodeSlovenianUpnQr
Shadowsocks or Skype New-ImageQRCodeShadowSocks, New-ImageQRCodeSkypeCall
New-ImageQRCodeWiFi `
    -SSID 'Guest WiFi' `
    -Password 'correct horse battery staple' `
    -FilePath '.\guest-wifi.png'

(Get-ImageQRCode -FilePath '.\guest-wifi.png').Text

Use New-ImageBarCode and Get-ImageBarCode for barcode generation and readback. C# applications that only need codes should reference CodeGlyphX directly.

Charts and report graphics

ImagePlayground provides a PowerShell DSL over ChartForgeX. New-ImageChart renders definitions emitted by the typed chart commands, accepts definitions from the pipeline, or accepts a native ChartForgeX.Core.Chart.

$annotations = New-ImageChartAnnotation `
    -X 4 `
    -Y 74 `
    -Text 'Peak' `
    -Arrow

New-ImageChart {
    New-ImageChartLine `
        -Name CPU `
        -Value 31, 42, 37, 55, 74, 61 `
        -Color CornflowerBlue `
        -Smooth
    New-ImageChartLine `
        -Name Memory `
        -Value 48, 51, 55, 57, 60, 62 `
        -Color MediumSeaGreen `
        -Smooth
} -Annotation $annotations `
  -FilePath '.\workstation-health.svg' `
  -XTitle Sample `
  -YTitle 'Usage %' `
  -ShowGrid

Available chart definitions

  • comparison and trend: bar, horizontal bar, line, smooth line, step line, area, stacked area, step area, slope, lollipop
  • distribution and relationship: scatter, bubble, histogram, box plot, range band, range bar, heatmap
  • part-to-whole: pie, donut, treemap, funnel, pictorial, waterfall
  • status and progress: circle, radial, gauge, bullet, progress
  • multidimensional and specialist: radar, polar, word cloud
  • finishing: annotations, themes, backgrounds, grid, legend, renderer options, watermarks, and DPI metadata

The same chart definition can produce PNG, SVG, or standalone HTML where the selected renderer supports it. See Examples/Charts.ChartForgeX.Showcase.ps1.

Canvases, dashboards, and visual blocks

Use a canvas when every element needs an explicit position. Use a visual grid when charts and reusable blocks should flow into dashboard panels.

Fixed-size social preview canvas
Fixed canvas
Service-health dashboard made from visual blocks
Adaptive visual grid

Fixed canvas

New-ImageCanvas `
    -Preset SocialPreview `
    -Title 'ChartForgeX release' `
    -Backdrop TechHorizon `
    -LayerDefinition {
        New-ImageCanvasText `
            -X 72 -Y 72 -Width 1000 `
            -Text 'ChartForgeX 1.3' `
            -FontSize 58 -Color White -Emphasized

        New-ImageCanvasInfoTile `
            -X 72 -Y 190 -Width 380 -Height 150 `
            -Icon SVG -Label Renderer -Value 'Dependency-free' `
            -Detail 'SVG + PNG' `
            -MiniChartKind Area -MiniValues 2, 4, 5, 8
    } `
    -FilePath '.\release-preview.png'

Dashboard grid

New-ImageVisualGrid `
    -Title 'Service health' `
    -Subtitle 'Generated from PowerShell objects' `
    -Columns 2 `
    -Theme DashboardLight `
    -ContentDefinition {
        New-ImageMetricCard `
            -Label Requests -Value 12840 -Trend '+12%' `
            -Status Positive -MiniValues 8, 9, 10, 12

        New-ImageListBlock `
            -Title Checks -Item API, Database `
            -Status Positive, Warning

        New-ImageTableBlock `
            -Title Services `
            -Column Name, Status `
            -Row @(
                @{ Name = 'API'; Status = 'Healthy' }
                @{ Name = 'Database'; Status = 'Warning' }
            )

        New-ImageTimelineBlock -Title Activity -ItemDefinition {
            New-ImageTimelineItem `
                -Kind Event -Title 'Build completed' `
                -Timestamp '14:20' -Status Positive
            New-ImageTimelineItem `
                -Kind ChecklistItem -Title 'Smoke tests' -Completed
        }
    } `
    -FilePath '.\service-health.svg'

Omit -FilePath to retain a reusable grid and pass it to New-ImageVisualStory or a native ChartForgeX canvas.

Topology, scenarios, and organization charts

Topology commands model the system first and render it second. Nodes can belong to groups, expose named ports and detail rows, carry status, and connect through typed edges. Scenarios can highlight an ordered route through the same topology.

Service topology generated by ImagePlayground

New-ImageTopology -TopologyDefinition {
    New-ImageTopologyGroup `
        -Id edge -Label 'Edge Site' -Status Healthy

    New-ImageTopologyNode `
        -Id gateway -Label Gateway -Kind Network `
        -Status Healthy -GroupId edge -Symbol GW

    New-ImageTopologyNode `
        -Id api -Label 'App API' -Kind Service `
        -Status Healthy -GroupId edge -Symbol API

    New-ImageTopologyNode `
        -Id database -Label Database -Kind Database `
        -Status Warning -GroupId edge -Symbol SQL

    New-ImageTopologyEdge `
        -SourceNodeId gateway -TargetNodeId api `
        -Label HTTPS -Kind Connectivity -Status Healthy `
        -Direction Forward

    New-ImageTopologyEdge `
        -SourceNodeId api -TargetNodeId database `
        -Label '32 ms' -Kind Dependency -Status Warning `
        -Direction Forward
} -Title 'Service topology' `
  -Layout Layered `
  -Direction LeftToRight `
  -Theme Dark `
  -FitContentToViewport `
  -FilePath '.\service-topology.png'

Choose PNG or SVG for static assets, HTML for interactive scenarios, and GIF or APNG when route motion should be sampled into an animation. Get-ImageTopologyDiagnostics exposes prepared geometry and routing evidence when a complex diagram needs inspection.

Organization charts use a separate hierarchy-focused surface. See Examples/Organization.Engineering.ps1 for a complete branch-oriented hierarchy.

Console stories

Console stories present a terminal session without coupling documentation to a screen recorder or executing the command shown in the story.

Animated PowerShell console story

$story = New-ImageConsoleStory `
    -WindowStyle WindowsTerminal `
    -Width 980 `
    -Speed Fast `
    -Content {
        New-ImageConsoleStoryTab `
            -Id PowerShell -Title PowerShell `
            -Profile PowerShell -Active

        New-ImageConsoleStoryCommand `
            -Text 'Invoke-EnvironmentAudit.ps1'

        New-ImageConsoleStoryOutput `
            -Text '12 checks passed' -Style Success

        New-ImageConsoleStoryOutput `
            -Text 'Report saved to audit.json' -Style Muted

        New-ImageConsoleStoryPause -Seconds 0.6
    }

$story | Export-ImageConsoleStory -Path '.\audit.svg'
$story | Export-ImageConsoleStory `
    -Path '.\audit.gif' `
    -FramesPerSecond 8 `
    -EndHoldSeconds 1

The story can contain typed commands, output, tables, blank lines, pauses, palettes, persistent tabs, and explicit tab switches. A new tab can open in the foreground or be staged in the background. Returning to a tab keeps its transcript.

For a real run, execute the script explicitly and feed captured output into the story:

$transcript = & .\Invoke-EnvironmentAudit.ps1 2>&1 |
    Out-String -Stream -Width 110

$story = $transcript | New-ImageConsoleStory `
    -CommandText '.\Invoke-EnvironmentAudit.ps1' `
    -Dialect PowerShell `
    -Theme PowerShell `
    -WindowStyle Minimal

$story | Export-ImageConsoleStory -Path '.\audit.svg'

New-ImageConsoleStory never executes -CommandText.

Source-to-result and animated visual stories

Generic stories combine resolved source, terminal output, text, images, and SVG into timed scenes. Declared outcomes must be visible in the completed scene, so a story that promises a chart cannot finish with only “Saved chart.png.”

$chartPath = '.\weekly-builds.png'
$sourceText = @'
New-ImageChart {
    New-ImageChartLine -Name Builds -Value 12, 18, 15, 24, 31
} -FilePath '.\weekly-builds.png' -Width 900 -Height 500
'@

New-ImageChart {
    New-ImageChartLine -Name Builds -Value 12, 18, 15, 24, 31
} -FilePath $chartPath -Width 900 -Height 500

$source = ConvertTo-ImageStorySource `
    -Text $sourceText `
    -Language PowerShell

$codePanel = New-ImageStoryPanel -Id code -Source $source
$chartPanel = New-ImageStoryPanel `
    -Id chart -MediaPath $chartPath `
    -AccessibleText 'Weekly builds chart'

$writeScene = New-ImageStoryScene `
    -Id write -Title 'Write five lines' -Panels $codePanel
$resultScene = New-ImageStoryScene `
    -Id result -Title 'See the chart' -Layout Split `
    -Panels $codePanel, $chartPanel
$outcome = New-ImageStoryOutcome `
    -Id chart -Label 'The weekly builds chart is visible.' `
    -PanelId chart

New-ImageStory `
    -Title 'Chart in five lines' `
    -Scenes $writeScene, $resultScene `
    -Outcomes $outcome `
    -FilePath '.\chart-story.gif'

PowerShell source highlighting uses the PowerShell parser. C# and Bash can use the optional ImagePlayground.Syntax.TreeSitter package. There is no regex-coloring fallback and no Tree-sitter native payload in the normal PowerShell module.

Use New-ImageVisualStory when a visual grid should reveal blocks through named motion cues. SVG and HTML preserve script-free animation; PNG, print, and reduced-motion output show the complete final state.

Portable visual artifacts and Office workflows

ConvertTo-ImageVisualArtifact attaches static SVG and versioned semantic JSON bytes to a pipeline object. The SVG is suitable for flat placement; the semantic payload lets a compatible consumer rebuild editable shapes and connectors.

$artifact = New-ImageTopology -TopologyDefinition {
    New-ImageTopologyNode -Id api -Label API -Kind Service
    New-ImageTopologyNode -Id database -Label Database -Kind Database
    New-ImageTopologyEdge `
        -Id api-db -SourceNodeId api -TargetNodeId database `
        -Label queries
} -FilePath '.\topology.svg' -PassThru |
    ConvertTo-ImageVisualArtifact `
        -Id service-topology `
        -Title 'Service topology'

$artifact | Export-ImageVisualArtifact -FilePath '.\topology-artifact.svg'

When PSWriteOffice is installed, the same artifact can become an editable Visio diagram:

$artifact | Export-OfficeVisioVisual -Path '.\topology.vsdx'

ImagePlayground owns the PowerShell-facing visual artifact. PSWriteOffice owns Office and Visio document creation.

Complete PowerShell command map

The current module exports 131 compiled cmdlets and two compatibility aliases. The groups below keep the full surface discoverable without turning the quick start into an alphabetical reference dump.

Image processing and files
Metadata and provenance
QR codes and barcodes
Charts
Canvases and visual blocks
Topology and organization
Console stories
Visual stories and artifacts

Compatibility aliases remain available as New-QRCode and New-QRCodeWiFi. New scripts should use the New-Image* names.

Get-Command -Module ImagePlayground |
    Sort-Object Noun, Verb

.NET API

The core package targets .NET Standard 2.0, .NET Framework 4.7.2, .NET 8, and .NET 10.

using ImagePlayground;
using SixLabors.ImageSharp;

using var image = ImagePlayground.Image.Load("photo.jpg");
image.Resize(1200, 1200, keepAspectRatio: true);
image.Watermark(
    "Internal",
    WatermarkPlacement.BottomRight,
    Color.White,
    fontSize: 28);
image.Save("photo-watermarked.jpg");

Choose the package that owns the job

Need Package
Image loading, processing, composition, metadata, thumbnails, icons, mosaics, avatars, or GIFs ImagePlayground
Charts, topology, hierarchy, visual blocks, canvases, or stories ChartForgeX
QR codes, barcodes, GS1 data, renderers, or image decoding CodeGlyphX
PowerShell access to all three owners ImagePlayground module

Output and interoperability

Surface Typical output
Image processing PNG, JPEG, WebP, GIF, BMP, and other ImageSharp-supported formats selected by extension
Charts and static report visuals PNG and SVG, with standalone HTML where supported
Topology PNG, SVG, interactive HTML, GIF, and APNG
Console stories SVG, HTML, PNG, GIF, and APNG
Generic and animated visual stories SVG, HTML, PNG, GIF, and APNG where supported by the selected renderer
Visual artifacts Static SVG plus versioned semantic JSON bytes

PowerShell commands have one execution path. Commands that can use asynchronous file APIs do so internally and honor pipeline cancellation; there is no -Async switch because a PowerShell invocation still completes before control returns to the caller.

Example library

Workflow Example
Image adjustments, crop, rotation, text, watermark, metadata, thumbnails, mosaic, and conversion Examples/Images.*.ps1
QR codes and barcodes Examples/QrCode.ps1, Examples/QrCodeWithLogo.ps1, Examples/Barcode.Create.ps1
Chart gallery Examples/Charts.ChartForgeX.Showcase.ps1
Social preview canvas Examples/Canvas.SocialPreview.ps1
Service-health dashboard Examples/VisualGrid.ServiceHealth.ps1
Service topology and route animation Examples/Topology.ServiceMap.ps1, Examples/Topology.RouteAnimation.ps1
Organization hierarchy Examples/Organization.Engineering.ps1
Console stories Examples/ConsoleStory.TabNavigation.ps1, Examples/ConsoleStory.CapturedScript.ps1
Generic source-to-result story Examples/Story.ChartInFiveLines.ps1

The curated Website examples provide shorter source-to-result walkthroughs. The generated command reference contains at least one example for every exported cmdlet.

Documentation

Generated command Markdown and external help come from the C# XML documentation through PSPublishModule/PowerForge. Update the source comments and regenerate instead of editing command pages by hand.

Compatibility and current boundaries

  • PowerShell: Windows PowerShell 5.1 and PowerShell 7+
  • Core library: .NET Standard 2.0, .NET Framework 4.7.2, .NET 8, and .NET 10
  • Main image engine: SixLabors.ImageSharp
  • Chart, topology, canvas, and story engine: ChartForgeX
  • QR-code and barcode engine: CodeGlyphX
  • Optional C# and Bash source highlighting: ImagePlayground.Syntax.TreeSitter

HEIF and HEIC support is deliberately narrower than normal ImageSharp-backed image processing. The HEIF commands inspect container data and manage EXIF/XMP paths described by their command documentation; they do not imply unrestricted HEIF pixel editing.

Breaking changes in 3.0

ImagePlayground 3.0 removed the PowerShell -Async parameter and the Windows-only ImagePlayground.Gdi project. Invoke asynchronous-capable commands normally.

The PowerShell module keeps chart-definition, topology, QR-code, and barcode commands as thin adapters. C# callers should use ChartForgeX or CodeGlyphX directly for those capabilities.

Troubleshooting

The installed module has fewer commands than this repository

Get-Module -ListAvailable ImagePlayground |
    Sort-Object Version -Descending |
    Select-Object -First 1 Name, Version, Path

Get-Command -Module ImagePlayground |
    Sort-Object Name

Repository source, an open branch, the PowerShell Gallery package, and the version installed on a machine are separate release states.

A QR code or barcode was created but does not scan

Decode the final saved artifact with Get-ImageQRCode or Get-ImageBarCode, then test the real device or application that must consume it. Styling and image composition can affect scanability even when the payload itself is valid.

A topology or story looks different in PNG and HTML

PNG represents the completed static state. HTML and SVG may retain interaction or motion. Reduced-motion and print output intentionally expose the final readable state rather than hiding content behind animation.

A complex topology needs layout evidence

Use -IncludeLayoutDiagnostics with New-ImageTopology or inspect the prepared result with Get-ImageTopologyDiagnostics before changing node coordinates or routing options blindly.

Build and test

dotnet build .\Sources\ImagePlayground.sln --configuration Release
dotnet test .\Sources\ImagePlayground.Tests\ImagePlayground.Tests.csproj --configuration Release
pwsh -File .\ImagePlayground.Tests.ps1

For a local source-module session:

dotnet build `
    .\Sources\ImagePlayground.PowerShell\ImagePlayground.PowerShell.csproj `
    --configuration Debug `
    --framework net8.0

$env:IMAGEPLAYGROUND_DEVELOPMENT = '1'
Import-Module .\ImagePlayground.psd1 -Force

Author and community

Blog LinkedIn Discord

License

ImagePlayground is available under the MIT License.

About

ImagePlayground is a PowerShell module that provides a set of functions for image processing. Among other things it can create QRCodes, BarCodes, Charts, and do image processing that can help with daily tasks.

Topics

Resources

Stars

100 stars

Watchers

2 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages

0