RaiImage 4.5.5

dotnet add package RaiImage --version 4.5.5
                    
NuGet\Install-Package RaiImage -Version 4.5.5
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RaiImage" Version="4.5.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RaiImage" Version="4.5.5" />
                    
Directory.Packages.props
<PackageReference Include="RaiImage" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RaiImage --version 4.5.5
                    
#r "nuget: RaiImage, 4.5.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RaiImage@4.5.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RaiImage&version=4.5.5
                    
Install as a Cake Addin
#tool nuget:?package=RaiImage&version=4.5.5
                    
Install as a Cake Tool

RaiImage

4.5.5

Coordinated 4.5.5 release; public behavior is aligned with the synchronized platform.

Release notes: RaiImage_RELEASE_NOTES_4.5.5.md.

Structured filename compatibility

CR054 normalizes a trailing numeric token run such as Customer-Order-Sheet-26-10.jpg into base CustomerOrderSheet, image number 10, and Structured filename CustomerOrderSheet_010.jpg. Separated uppercase words are PascalCased: Order_SHEET_001.jpg becomes OrderSheet_001.jpg.

Structured numbers now use D3 minimum width; Legacy keeps D2. Existing two-digit names still parse, but their recomposed Structured path changes. No stored files are renamed automatically. Migrate existing paths and references together before reimporting into an older tree. Values above 999 retain every digit; D3 does not promise lexicographic ordering across the next width boundary. Numbered diagram siblings and ItemTreeTextFile also use D3 so source, manifest, and SVG names stay aligned. Include these numbered paths in migration.

4.5.4

Coordinated 4.5.4 release; public behavior is aligned with the synchronized platform.

Release notes: RaiImage_RELEASE_NOTES_4.5.4.md.

4.5.3

Coordinated 4.5.3 release; public behavior is aligned with the synchronized platform.

Release notes: RaiImage_RELEASE_NOTES_4.5.3.md.

4.5.2

Coordinated 4.5.2 release; public behavior is aligned with the synchronized platform.

Release notes: RaiImage_RELEASE_NOTES_4.5.2.md.

4.5.0

Coordinated 4.5.0 dependency alignment; image behavior is unchanged.

Release notes: RaiImage_RELEASE_NOTES_4.5.0.md.

4.4.8

Coordinated 4.4.8 dependency alignment; image behavior is unchanged.

Release notes: RaiImage_RELEASE_NOTES_4.4.8.md.

RaiImage change requests and release notes are centralized in the RAIkeep doc/ directory under RaiImage_... filenames; they are not stored separately in this child repository.

Classes to manage image files in directory trees across local and cloud-backed folders on Windows, macOS, and Linux.

4.4.6

Adds selectable EXIF reads through ImageMagick and structured ExifMetadata: date/offset pairs become DateTimeOffset, related fields are grouped, and exact rational values are retained. ImageTree naming conventions remain unchanged.

Release notes: RaiImage_RELEASE_NOTES_4.4.6.md.

4.4.5

  • Participates unchanged in the synchronized nine-package CR047 release.
  • Fallback dependencies align to OsLibCore 4.4.5 and RaiUtils 4.4.5.
  • Current release notes: RaiImage_RELEASE_NOTES_4.4.5.md

4.4.4

  • Participates unchanged in the synchronized nine-package CR044 release.
  • Fallback dependencies align to OsLibCore 4.4.4 and RaiUtils 4.4.4.
  • Current release notes: RaiImage_RELEASE_NOTES_4.4.4.md

4.4.2

  • Participates unchanged in the synchronized eight-package CR040/CR041 release.
  • Fallback dependencies align to OsLibCore 4.4.2 and RaiUtils 4.4.2.
  • Current release notes: RaiImage_RELEASE_NOTES_4.4.2.md

4.4.1

  • Participates unchanged in the synchronized eight-package RAIkeep v4.4.1 CR037 release.
  • Fallback dependencies align to OsLibCore 4.4.1 and RaiUtils 4.4.1.
  • Current release notes: RaiImage_RELEASE_NOTES_4.4.1.md

4.3.2

  • Participates unchanged in the coordinated seven-package RAIkeep v4.3.2 CR027 release.
  • Fallback dependencies align to OsLibCore 4.3.2 and RaiUtils 4.3.2.
  • Current release notes: RaiImage_RELEASE_NOTES_4.3.2.md

4.3.1

  • Participates unchanged in the coordinated seven-package RAIkeep v4.3.1 CR026 release.
  • Fallback dependencies align to OsLibCore 4.3.1 and RaiUtils 4.3.1.
  • Current release notes: RaiImage_RELEASE_NOTES_4.3.1.md

4.3.0

  • Adds optional ItemTreeTextFile.ItemNumber with canonical ItemId[_NN][_NameExt].ext composition while keeping buckets derived only from ItemId.
  • Adds typed PlantUML artifact rendering that keeps .puml, _config.puml, and .svg siblings aligned on one base ItemId, optional number, and NameExt.
  • Supports CR025's _UCD, _RFD/_OD, _CD, _AD, and _SD diagram artifact families without treating their archetype NameExt as part of ItemId.
  • Fallback dependencies align to OsLibCore 4.3.0 and RaiUtils 4.3.0.
  • Current release notes: RaiImage_RELEASE_NOTES_4.3.0.md

4.2.11 (superseded before publication)

  • This prepared line was not published; its changes are carried by v4.3.0.
  • Fallback dependencies align to OsLibCore 4.2.11 and RaiUtils 4.2.11.
  • Current release notes: RaiImage_RELEASE_NOTES_4.2.11.md

4.2.10

  • Participates unchanged in the coordinated seven-package RAIkeep 4.2.10 release.
  • Fallback dependencies align to OsLibCore 4.2.10 and RaiUtils 4.2.10.
  • Current release notes: RaiImage_RELEASE_NOTES_4.2.10.md

4.2.9

  • Implements accepted incident corrective action CR022 for JPEG transformation.
  • ImageMagick.JpegTran keeps an established image pathname continuously present: the external tool uses isolated TmpFile input/output and only validated result bytes are written back in place.
  • Failure before the in-place write leaves the original image unchanged; no delete-and-move rollback remains.
  • Fallback dependencies align to OsLibCore 4.2.9 and RaiUtils 4.2.9.
  • Current release notes: RaiImage_RELEASE_NOTES_4.2.9.md
  • Mandatory storage contract: Cloud-Storage-In-Place-Invariant.md

4.2.8

  • Aligns RaiImage with the coordinated seven-package RAIkeep 4.2.8 release implementing accepted CR021.
  • Public image and ItemTree behavior remains unchanged from 4.2.7.
  • Current release notes: RaiImage_RELEASE_NOTES_4.2.8.md

4.2.7

  • Implements accepted CR020 with ItemTreePath.SelectFiles() for exact-ItemId selection across images, .puml, _config.puml, and .raid files.
  • Adds destination-oriented aggregate movement through destinationItemPath.mv(sourceItemPath), including rename, subscriber relocation, path-convention migration, collision preflight, rollback, and empty-bucket pruning.
  • Adds PathConventionType.Flat and renames the truthful non-image tree type to ItemTreeTextFile.
  • Replaces the procedural ImageTreeFile.From... construction surface with constructors accepting ItemTreePath plus fluent SelectFirstExistingFile(...) resolution.
  • Current release notes: RaiImage_RELEASE_NOTES_4.2.7.md

4.2.6

  • Implements accepted CR019's package placement by consuming all word-case behavior from RaiUtils.
  • Retains deprecated RaiImage.WordCase and ordinary static RaiImage.StringHelper compatibility facades for pre-4.2.6 compiled callers; no independent implementation remains here.
  • Recompiled callers should import RaiUtils for WordCase, WordSplit, CamelSplit, ToTitle, and the new Unicode-safe WordSeams API.
  • Aligns fallback dependencies on OsLibCore 4.2.6 and RaiUtils 4.2.6.
  • Current release notes: RaiImage_RELEASE_NOTES_4.2.6.md

4.2.5

  • Aligns RaiImage with the coordinated seven-package RAIkeep 4.2.5 release implementing accepted CR017.
  • Aligns fallback dependencies on OsLibCore 4.2.5 and RaiUtils 4.2.5; image behavior is unchanged from 4.2.4.
  • Current release notes: RaiImage_RELEASE_NOTES_4.2.5.md

4.2.4

  • Implements accepted CR016 Unicode normalization for ImageTree-owned subscriber names, item identifiers, templates, filenames, and typed text artifacts.
  • Normalizes logical names to NFC before deriving directories or writing files while preserving caller-supplied ImageTree root paths.
  • Derives 3x3, 8x2, and canonical-name buckets by Unicode text elements so combining sequences, surrogate pairs, and emoji clusters are not split.
  • Resolves legacy NFC, NFD, and mixed-normalization trees segment by segment through the OsLib RaiPath/RaiFile boundary.
  • Rejects ambiguous canonically equivalent directory or source-file matches with RaiImageIOException.
  • Adds SVG to the default source lookup extensions.
  • Aligns fallback dependencies on OsLibCore 4.2.4 and RaiUtils 4.2.4.
  • 4.2.4 release notes: RaiImage_RELEASE_NOTES_4.2.4.md

4.2.3

  • Participates unchanged in the coordinated CR015 package line.
  • Implements CR010's truthful ImageTreeTextFile placement beside rendered ImageTree images and preserves RaiDiagram's supported PlantUML rendering boundary.
  • Adds resolved _config.puml persistence using NameExt = "config", typed source/config handles, and PlantUML -config invocation.
  • Aligns fallback dependencies on OsLibCore 4.2.3 and RaiUtils 4.2.3.
  • Adds RaiImageIOException and RaiImageNotFoundException for image-domain failures.
  • Missing lookup directories throw RaiPathNotFoundException; missing images in an existing location throw RaiImageNotFoundException.
  • Missing ImageMagick or PlantUML executables throw ToolNotFoundException.
  • CR014 routes ImageMagick, PlantUML, OptiPNG, and JPEGTran execution through typed RaiImage wrappers; optimizer paths are passed as discrete process arguments.
  • Image files accept IAsyncEnumerable<byte[]> ingestion through the OsLib file boundary.
  • Refreshes the live hierarchy diagram so it no longer advertises the removed CamelCase type.
  • ImageFile.EasyFileName(...) now converts separated and compact trailing digits into ImageNumber while keeping pure numeric names as item ids.
  • WordCase now preserves all-uppercase tokens in PascalCase output so names such as SD-State-Sony-149 normalize as expected.
  • The structured-name flow now stays aligned with the iorg CLI when it stages source images into ImageTreeFile layouts.
  • Keeps the current packaged cloud-provider claim of OneDrive, GoogleDrive, ICloudDrive, and Dropbox.
  • This README is configured to ship inside the RaiImage NuGet package.

cloud storage compatibility

RaiImage is designed to work with OsLib cloud-root discovery and the current packaged support claim covers:

  • Dropbox
  • OneDrive
  • GoogleDrive
  • ICloudDrive

For cloud-root configuration and environment/setup details, see the OsLib cloud storage discovery guide and keep the same RAIkeep.json5 cloud-root contract across packages.

namespace

RaiImage

classes

StringHelper: deprecated binary compatibility facade for pre-4.2.6 static callers.

  • Canonical extension methods now live in RaiUtils.StringHelper.
  • The RaiImage facade methods are intentionally ordinary static methods, preventing duplicate extension discovery.

WordCase: deprecated binary compatibility facade over RaiUtils.WordCase.

  • Use RaiUtils.WordCase for new and recompiled code.

ColorInfo: ImageMagick-compatible color descriptor with optional named-color lookup.

  • ColorInfo: Get, NamedColors, Code, Name, Count, Color

DyeDelta: snapshot of hue/brightness/saturation deltas between two colors.

  • DyeDelta: constructor-based delta capture for Phi, DeltaB, and DeltaS

Dye: color-wheel and brightness/saturation delta calculator.

  • Dye: Phi, DeltaB, DeltaSa, DeltaSb, DeltaS

Extensions and Size: image-size parser and size value helpers.

  • Extensions: Parse
  • Size: ToString, nosize, noSize, HSEmidsize, HSEfullsize

ImageNamingConvention and INamingConvention: file-name convention model for parsing and composition.

  • ImageNamingConvention: Legacy, ItemTemplate, Structured
  • INamingConvention: NamingConvention, ApplyNamingConvention

ImageFile: image filename parser/composer on top of RaiFile.

  • ImageFile: Sku, Color, ImageNumber, NameExt, TileTemplate, TileNumber, NameWithExtension, FullName, ShortName
  • ImageFile: ApplyNamingConvention, FromFile, BlankToCamelCase, EasyFileName, SetImageNumber, ExtendToFirstExistingFile

ItemTreePath: root path plus tree split convention for item-based directory partitioning.

  • ItemTreePath: Convention, RootPath, ItemId, Topdir, Subdir, TopdirRoot, SubdirRoot, Path, FullPath
  • ItemTreePath: ConventionSplit, ApplyPathConvention, SelectFiles, destination-oriented mv, PruneEmptyDirectories, ToString

ImageTreeFile: ImageFile variant with tree-based path partitioning.

  • ImageTreeFile: Convention, Topdir, Subdir, TopdirRoot, SubdirRoot
  • ImageTreeFile: ItemTreePath-aware constructors, SelectFirstExistingFile, ApplyPathConvention, mkdir, CopyTo, MoveToTree, rmdir, RenderPlantUml
  • Split behavior is driven by PathConventionType; Subdir is cumulative, for example 3x3 => 123/123456 and 8x2 => 12345678/1234567890. See PATH_CONVENTION_SPLITTING.md.

ItemTreeTextFile: truthful text-file placement in an ItemTree bucket.

  • ItemTreeTextFile: SubscriberRoot, ItemPath, ItemId, NameExt, Convention, SubdirRoot, CreateSibling
  • It derives from OsLib TextFile, not ImageFile, while sharing the same subscriber root, item id, ItemTreePath, and PathConventionType placement as an ImageTreeFile.
  • A resolved PlantUML config uses NameExt = "config" and Ext = "puml", producing names such as ScheduleRehearsal_config.puml beside .raid, clean .puml, and rendered .svg artifacts.

ImageMagickCommand: typed CLI wrapper around ImageMagick subcommands.

  • ImageMagickCommand: CandidateExecutables, BuildArguments, RunSubcommand, RunSubcommandAsync
  • OptiPngCommand: BuildArguments, Optimize, OptimizeAsync
  • JpegTranCommand: BuildArguments, Transform, TransformAsync
  • ImageMagick: ImPath, MagickCommand, OptiPngCommand, JpegTranCommand, JpegTranOptions, Message; every external image-tool call delegates to its typed wrapper
  • ImageMagick: Convert, Mogrify, Composite, Identify, EmptyForm, CreateHistogram, Histogram, OptiPng, JpegTran, GetSize, CreateTiles

PlantUmlCommand, PlantUml, and PlantUmlRenderResult: subscriber-aware PlantUML rendering support.

  • PlantUmlCommand: CandidateExecutables, BuildSvgArguments, RenderSvg, RenderSvgAsync, including optional -config injection
  • PlantUML .jar commands run Java in headless mode for CI, server, and remote-terminal compatibility.
  • PlantUml: PlantUmlPath, CommandName, JavaCommand, Message, RenderSvg
  • PlantUmlRenderResult: compatibility Source/Config image-shaped handles, typed SourceArtifact/ConfigArtifact text files, and Svg; all use the same subscriber ItemTreePath

ImageTypes: parsed list of image extensions with a reusable default set.

  • ImageTypes: Default, Array, String

Pane: one WxH viewport value with string and Size conversions.

  • Pane: DefaultPane, String, Size

Panes: pair-like container for zoom/control pane definitions.

  • Panes: Count, String, indexer, ZoomPort, ControlPort

Src: parser for the src= parameter used in HDitem-style image URLs.

  • Src: HasMultipleSkus, Skus, Sku, Subscriber, ImageNumber, Image, ImageWithExtension, String, Param

Tmp: parser for the tmp= template/overlay parameter.

  • Tmp: Template, Overlays, String, Param

IservUrl: URI decomposition into protocol, host, app, page, and path components.

  • IservUrl: Subscriber, Protocol, Host, Port, Path, App, Page, Uri

ServiceUrl: service-oriented specialization layer on top of IservUrl.

  • ServiceUrl: init(Uri, bool) and inherited IservUrl decomposition members

ImageUrl: HDitem-aware image URL parser with Src and Tmp extraction.

  • ImageUrl: Src, Tmp, Url, isHDitemLink

TwoSizes: comparable pair of small/large sizes with a ranking score.

  • TwoSizes: Rating, SmallRect, LargeRect, CompareTo, Equals

example

var count = ImageTreeFile.MoveToTree(
            fromDir: p["from"],
            toDirRoot: p["to"],
            splitMode: PathConventionType.ItemIdTree8x2,
            filter: p["filter"],
            remove: p["remove"]);
Console.WriteLine($"{count} files moved.");

nuget

https://www.nuget.org/packages/RaiImage/

diagram

detailed api

migration and release docs

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on RaiImage:

Package Downloads
RaiDiagram

Agent-readable semantic diagrams, model reconciliation, and PlantUML rendering for RAIkeep.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
4.5.5 15 10/7/2026
4.5.4 92 10/3/2026
4.5.3 88 10/3/2026
4.5.2 93 10/3/2026
4.5.0 90 10/3/2026
4.4.6 93 10/2/2026
4.4.5 121 9/30/2026
4.4.4 117 9/29/2026
4.4.3 111 9/29/2026
4.4.2 111 9/27/2026
4.4.1 137 9/25/2026
4.4.0 119 9/24/2026
4.3.2 146 9/14/2026
4.3.1 121 9/13/2026
4.3.0 132 9/13/2026
4.2.10 138 9/10/2026
4.2.9 132 9/10/2026
4.2.8 127 9/10/2026
4.2.7 143 9/9/2026
4.2.6 141 9/3/2026
Loading failed

CR054: PascalCase numeric-suffix normalization and D3 Structured image generation; numbered diagram siblings also use D3. Existing paths require coordinated migration.