ChromaFx.Native 0.6.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package ChromaFx.Native --version 0.6.1
                    
NuGet\Install-Package ChromaFx.Native -Version 0.6.1
                    
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.Native" Version="0.6.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ChromaFx.Native" Version="0.6.1" />
                    
Directory.Packages.props
<PackageReference Include="ChromaFx.Native" />
                    
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.Native --version 0.6.1
                    
#r "nuget: ChromaFx.Native, 0.6.1"
                    
#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.Native@0.6.1
                    
#: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.Native&version=0.6.1
                    
Install as a Cake Addin
#tool nuget:?package=ChromaFx.Native&version=0.6.1
                    
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
  • Load / LoadAsync from path, stream, byte[], memory, or span; matching Save / SaveAsync
  • Terminal rendering (ChromaFx.Processing.Terminal) — ASCII/ANSI art plus Kitty and iTerm2 inline images
  • Opt-in ChromaFx.PixelArt — Scale2x / Scale3x / Hq2x–4x / CleanEdge / Eagle / SaI upscalers and RotateSprite / CleanEdgeRotate (not in the meta-package)
  • Opt-in ChromaFx.Native — WebP/AVIF format registration stubs (Decode/Encode not functional yet; not in the meta-package)

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
ChromaFx.PixelArt Opt-in pixel-art upscaling (Scale2x / Scale3x, Hq2x–4x, CleanEdge, Eagle, SaI) and RotateSprite / CleanEdgeRotate. Not in the meta-package. ChromaFx.PixelArt
ChromaFx.Native Opt-in WebP/AVIF stubs (not yet functional codecs). Not in the meta-package. ChromaFx.Native
  • Use ChromaFx for new projects targeting .NET 10.
  • Use ChromaFx.Core, ChromaFx.IO, and ChromaFx.Processing for modular usage.
  • Add ChromaFx.PixelArt for Scale2x / Scale3x / Hq2x–4x / CleanEdge / Eagle / SaI or RotateSprite / CleanEdgeRotate.
  • Add ChromaFx.Native when you want WebP/AVIF format IDs registered (codecs land in a later release).

Installation

Current NuGet line is 0.6.1 (tag-only releases; 0.x may still change before 1.0):

dotnet add package ChromaFx
# optional:
dotnet add package ChromaFx.PixelArt
dotnet add package ChromaFx.Native   # WebP/AVIF stubs only for now

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");
var fromBytes = Image.Load(pngBytes);                 // zero-copy when array-backed
var image = await Image.LoadAsync("input.png");       // async read, sync decode
Console.Write(image.ToAsciiArt(new AsciiArtOptions { MaxWidth = 40, Invert = true }));

API notes

  • Prefer the ChromaFx meta-package (ChromaFx.Core + .IO + .Processing). Add ChromaFx.PixelArt separately for pixel-art filters.
  • 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 resolve via registered plugins (ChromaFx.Native stubs today; custom plugins override).
  • Animation supports per-frame delays (GetFrameDelay / SetFrameDelay / FrameDelays); Delay sets all frames.
  • Path Save / SaveAsync use the last registered format that accepts the extension (plugins can override built-ins). ImageFormats.TryGetFormat looks up by id and returns the first match.
  • 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 types as the only API Prefer ImageFormats / typed encoders (BmpFormat etc. remain public for advanced use)

Requirements

  • .NET 10 SDK

Documentation

Guides: chromafx.net (chromafx/chromafx-site).

Changelog

See CHANGELOG.md for notable changes.

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.
  • ✅ PixelArt – opt-in ChromaFx.PixelArt (Scale2x / Scale3x / Hq2x–4x / CleanEdge / Eagle / SaI, RotateSprite / CleanEdgeRotate).
  • ✅ Performance (pass) – Color ctor alloc fix; faster ApplyRgbLut; AdaptiveThreshold / AdaptiveEqualize / Kuwahara / Blend alloc cuts.
  • ⏭ Extended formats – ChromaFx.Native scaffolded (WebP/AVIF stubs); real codecs next.
  • ⏭ Extended features – more drawing/effects.
  • ⏭ Performance – more Span/ArrayPool/SIMD on codecs and remaining filters.

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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.6.2 63 11/6/2026
0.6.1 62 11/4/2026

0.6.1: bit-identical perf (filters/BMP/JPEG/PNG/GIF); ChromaFx.Native WebP/AVIF stubs; IHistogram.Load(span), Distance.EuclideanSquared. See CHANGELOG.md. API may still change before 1.0 (0.x).