ChromaFx.Processing 0.4.0-beta.44

This is a prerelease version of ChromaFx.Processing.
There is a newer version of this package available.
See the version list below for details.
dotnet add package ChromaFx.Processing --version 0.4.0-beta.44
                    
NuGet\Install-Package ChromaFx.Processing -Version 0.4.0-beta.44
                    
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="ChromaFx.Processing" Version="0.4.0-beta.44" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ChromaFx.Processing" Version="0.4.0-beta.44" />
                    
Directory.Packages.props
<PackageReference Include="ChromaFx.Processing" />
                    
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 ChromaFx.Processing --version 0.4.0-beta.44
                    
#r "nuget: ChromaFx.Processing, 0.4.0-beta.44"
                    
#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 ChromaFx.Processing@0.4.0-beta.44
                    
#: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=ChromaFx.Processing&version=0.4.0-beta.44&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=ChromaFx.Processing&version=0.4.0-beta.44&prerelease
                    
Install as a Cake Tool

ChromaFx — .NET image processing library

Build Status NuGet License

Modern .NET image processing library.

A lean, managed alternative for .NET apps that need image processing without native codec DLLs.

Key points:

  • Pure managed C# on .NET 10 — no third-party NuGet dependencies, no native codec binaries to deploy (BMP, PNG, JPEG, GIF)
  • Uses Span<T>, ArrayPool, and SIMD on key paths
  • Explicit Mutate / Clone processing API
  • Typed encoders (JpegEncoder, PngEncoder, …) and a public ImageFormats registry for extensions
  • Pipeline-friendly fluent context for common filters

Performance & Architecture

Fully managed on .NET 10 — no native codec binaries for Docker/Lambda multi-arch. Native code can still edge out pure managed pixel loops; ChromaFx prioritizes deployability and allocation-conscious processing for typical decode → filter → encode pipelines. Measure with tests/ChromaFx.Benchmarks for your scenario.

Packages

Package Description NuGet Link
ChromaFx Meta-package for .NET 10 (Core + IO + Processing). ChromaFx
ChromaFx.Core Core types and abstractions. ChromaFx.Core
ChromaFx.IO Image file IO, encoding/decoding support. ChromaFx.IO
ChromaFx.Processing Image processing algorithms and effects. ChromaFx.Processing
  • Use ChromaFx for new projects targeting .NET 10.
  • Use ChromaFx.Core, ChromaFx.IO, and ChromaFx.Processing for modular usage.

Installation

dotnet add package ChromaFx

Getting Started

// With PackageReference to ChromaFx, common namespaces are injected.
var thumb = Image.Load("input.png")
    .Clone(ctx => ctx
        .Resize(200, 200)
        .Rotate(90)
        .Invert());

thumb.Save("output.jpg", new JpegEncoder { Quality = 85 });

Image.Load("input.png")
    .Mutate(ctx => ctx.Resize(800, 600).Brightness(0.1f))
    .Save("output.png");

API notes

  • Prefer the ChromaFx meta-package (ChromaFx.Core + .IO + .Processing).
  • Image.Load / Save / ImageFormats live in IO; Mutate/Clone in Processing.
  • Fluent context: core ops on IImageProcessingContext, more via extensions (BoxBlur, Saturation, Dilate, Grayscale, …); escape hatch Apply(IFilter).
  • Typed encoders: ChromaFx.IO.Encoders (JpegEncoder, PngEncoder, GifEncoder as IAnimationEncoder, …).
  • Plugins: IImageFormat / IAnimationFormat (Encode throws on failure); FileFormats.WebP / Avif reserved for ChromaFx.Native or custom plugins.
  • Animation supports per-frame delays (GetFrameDelay / SetFrameDelay / FrameDelays); Delay sets all frames.
  • Path Save uses the registered format matching the extension; ImageFormats.TryGetFormat looks up by id.
  • Meta-package injects common usings via buildTransitive/ChromaFx.props.
  • Pack with dotnet pack (not on every local build).

Migration (breaking)

These older APIs are removed (not obsolete):

Removed Use instead
img.Apply(...) / img.Apply<T>() img.Mutate(c => c.Invert()) / c.Apply(filter)
img.Process(...) / ImagePipeline img.Mutate / Clone
ImageOperatorExtensions (BrightnessUp, …) Clone/Mutate + context ops
img.Copy() img.Clone()
img.Save(path) → bool void (throws)
IImageFormat.Encode → bool void (throws)
LoadAnimation(path) Animation.Load(path)
FormatManager / Manager ImageFormats.Register
IFormat IImageFormat
Public format wire types internal (Tests keep access via InternalsVisibleTo)

Requirements

  • .NET 10 SDK

License

Apache 2.0 - see LICENSE

Attribution

This project is a fork of Structure.Sketching, originally developed by JaCraig under the Apache License 2.0.

Modifications and ongoing maintenance by Ho Tzin Mein (2023–2026).

Roadmap

  • ✅ Modularization – Core, IO, Processing packages split out.
  • ✅ API modernization – Mutate/Clone, typed encoders, ImageFormats registry.
  • ⏭ Performance – broaden Span/ArrayPool/SIMD coverage beyond current hot paths.
  • ⏭ Extended formats – optional native extension package (WebP/AVIF/…).
  • ⏭ Extended features – pixel upscaling, more drawing/effects.

Contributing

Contributions, bug reports, and suggestions are welcome!

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 (2)

Showing the top 2 NuGet packages that depend on ChromaFx.Processing:

Package Downloads
ChromaFx

Modern, high-performance .NET image processing and drawing library. Supports PNG, JPEG, BMP, and GIF, with pipeline-friendly APIs. Targets .NET 10.

ChromaFx.PixelArt

Pixel-art upscaling and rotation for ChromaFx. Scale2x/3x/4x/8x (EPX), Hq2x–4x, CleanEdge, Eagle/SaI, RotSprite RotateSprite, and CleanEdgeRotate.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.6.2 48 11/6/2026
0.6.1 61 11/4/2026
0.6.0 85 11/3/2026
0.5.0-beta.53 53 11/3/2026
0.5.0-beta.52 50 11/3/2026
0.5.0-beta.51 45 11/3/2026
0.5.0-beta.50 44 11/3/2026
0.5.0-beta.49 46 11/3/2026
0.5.0-beta.48 51 11/3/2026
0.5.0-beta.47 45 11/3/2026
0.5.0-beta.46 47 11/3/2026
0.5.0-beta.45 70 10/31/2026
0.4.0-beta.44 79 10/24/2026
0.4.0-beta.42 69 10/20/2026
0.4.0-beta.41 73 10/20/2026
0.4.0-beta.33 134 6/16/2026
0.4.0-beta.29 209 9/29/2025
0.4.0-beta.28 203 9/29/2025
0.4.0-beta.27 186 9/29/2025
0.4.0-beta.25 202 9/29/2025
Loading failed