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.
Start here: install · quick start · feature guide · PowerShell commands · examples · generated reference
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.
These are real outputs generated with the module in this repository.
| 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.
| 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 |
ImagePlayground supports Windows PowerShell 5.1 and PowerShell 7+.
Install-Module -Name ImagePlayground -Scope CurrentUser
Import-Module ImagePlaygroundTo update an existing installation:
Update-Module -Name ImagePlaygroundInstall the core package for image loading and processing:
dotnet add package ImagePlaygroundAdd the owning package when the application also needs charts, topology, QR codes, or barcodes:
dotnet add package ChartForgeX
dotnet add package CodeGlyphXThe ImagePlayground .NET package does not wrap ChartForgeX or CodeGlyphX. That aggregation belongs to the PowerShell module.
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'New-ImageQRCode `
-Content 'https://evotec.xyz' `
-FilePath '.\evotec-qr.png'
$decoded = Get-ImageQRCode -FilePath '.\evotec-qr.png'
$decoded.TextNew-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 -ShowGridusing ImagePlayground;
ImageHelper.Resize(
filePath: "photo.jpg",
outFilePath: "photo-small.jpg",
width: 1200,
height: 1200,
keepAspectRatio: true);ImagePlayground uses SixLabors.ImageSharp for the main image engine. The primary package does not depend on System.Drawing.
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 85The destination extension selects the output format. JPEG and WebP support -Quality; PNG supports -CompressionLevel.
$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()
}| 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 |
Scripted text and watermark output |
See the focused scripts under Examples/Images.*.ps1 and the .NET samples in Sources/ImagePlayground.Examples.
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 `
-PassThruJPEG 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.
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 |
Wi-Fi |
Barcode |
| 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').TextUse New-ImageBarCode and Get-ImageBarCode for barcode generation and readback. C# applications that only need codes should reference CodeGlyphX directly.
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- 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.
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 canvas |
Adaptive visual grid |
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'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 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.
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 present a terminal session without coupling documentation to a screen recorder or executing the command shown in the 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 1The 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.
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.
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.
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
Add-ImageText,Add-ImageTextBox,Add-ImageWatermarkCompare-Image,ConvertFrom-ImageBase64,ConvertTo-Image,ConvertTo-ImageBase64Get-Image,Merge-Image,Resize-Image,Save-ImageNew-ImageAvatar,New-ImageCrop,New-ImageGif,New-ImageGrid,New-ImageIcon,New-ImageMosaic,New-ImageThumbnailSet-ImageAdjust,Set-ImageBlur,Set-ImageRotation,Set-ImageSharpen
Metadata and provenance
QR codes and barcodes
Get-ImageBarCode,Get-ImageQRCode,New-ImageBarCode,New-ImageQRCodeNew-ImageQRContact,New-ImageQRCodeCalendar,New-ImageQRCodeEmail,New-ImageQRCodeGeoLocation,New-ImageQRCodeOtp,New-ImageQRCodePhoneNumber,New-ImageQRCodeSms,New-ImageQRCodeWiFiNew-ImageQRCodeBezahlCode,New-ImageQRCodeBitcoin,New-ImageQRCodeGirocode,New-ImageQRCodeMonero,New-ImageQRCodeShadowSocks,New-ImageQRCodeSkypeCall,New-ImageQRCodeSlovenianUpnQr,New-ImageQRCodeSwiss
Charts
New-ImageChart,New-ImageChartOptions,New-ImageChartAnnotationNew-ImageChartArea,New-ImageChartBar,New-ImageChartBarOptions,New-ImageChartHorizontalBar,New-ImageChartLine,New-ImageChartLollipop,New-ImageChartSlope,New-ImageChartStackedArea,New-ImageChartStepArea,New-ImageChartStepLineNew-ImageChartBoxPlot,New-ImageChartBubble,New-ImageChartHeatmap,New-ImageChartHistogram,New-ImageChartRangeBand,New-ImageChartRangeBar,New-ImageChartScatterNew-ImageChartDonut,New-ImageChartFunnel,New-ImageChartPictorial,New-ImageChartPie,New-ImageChartTreemap,New-ImageChartWaterfallNew-ImageChartBullet,New-ImageChartCircle,New-ImageChartGauge,New-ImageChartProgress,New-ImageChartRadialNew-ImageChartPolar,New-ImageChartRadar,New-ImageChartWordCloud
Canvases and visual blocks
Topology and organization
Get-ImageTopologyDiagnostics,New-ImageTopologyNew-ImageTopologyEdge,New-ImageTopologyGroup,New-ImageTopologyNode,New-ImageTopologyNodeDetail,New-ImageTopologyNodePortNew-ImageTopologyMotion,New-ImageTopologyScenario,New-ImageTopologyScenarioStepNew-ImageOrganizationChart,New-ImageOrganizationMember
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, VerbThe 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");| 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 |
| 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.
| 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.
- Generated PowerShell command reference
- Website documentation
- Workflow selection guide
- Charts, topology, and visual reporting
- PowerShell example scripts
- .NET example project
- HEIC support investigation
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.
- 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.
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.
Get-Module -ListAvailable ImagePlayground |
Sort-Object Version -Descending |
Select-Object -First 1 Name, Version, Path
Get-Command -Module ImagePlayground |
Sort-Object NameRepository source, an open branch, the PowerShell Gallery package, and the version installed on a machine are separate release states.
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.
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.
Use -IncludeLayoutDiagnostics with New-ImageTopology or inspect the prepared result with Get-ImageTopologyDiagnostics before changing node coordinates or routing options blindly.
dotnet build .\Sources\ImagePlayground.sln --configuration Release
dotnet test .\Sources\ImagePlayground.Tests\ImagePlayground.Tests.csproj --configuration Release
pwsh -File .\ImagePlayground.Tests.ps1For 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 -ForceImagePlayground is available under the MIT License.