SimpleJpegDecoder 0.5.0
dotnet add package SimpleJpegDecoder --version 0.5.0
NuGet\Install-Package SimpleJpegDecoder -Version 0.5.0
<PackageReference Include="SimpleJpegDecoder" Version="0.5.0" />
<PackageVersion Include="SimpleJpegDecoder" Version="0.5.0" />
<PackageReference Include="SimpleJpegDecoder" />
paket add SimpleJpegDecoder --version 0.5.0
#r "nuget: SimpleJpegDecoder, 0.5.0"
#:package SimpleJpegDecoder@0.5.0
#addin nuget:?package=SimpleJpegDecoder&version=0.5.0
#tool nuget:?package=SimpleJpegDecoder&version=0.5.0
SimpleJpegDecoder
A lightweight C# JPEG decoder targeting Meadow and other memory-constrained platforms. Works on any modern C# platform supporting .NET Standard 2.0 or .NET Framework 4.7.2.
NuGet: https://www.nuget.org/packages/SimpleJpegDecoder/
Features
- Decodes baseline JPEG (no progressive or lossless)
- Supports 8-bit grayscale and YCbCr (RGB) images
- Supports any power-of-two chroma subsampling ratio
- Supports restart markers
- Implements
IDisposablefor deterministic release of unmanaged memory - Zero-allocation decode path for repeated use (e.g. display refresh on Meadow)
Usage
Basic decode from byte array
var decoder = new JpegDecoder();
byte[] pixels = decoder.DecodeJpeg(jpegBytes);
// decoder.Width, decoder.Height, decoder.IsColor are now populated
Decode from a Stream
using var stream = File.OpenRead("image.jpg");
byte[] pixels = decoder.DecodeJpeg(stream);
Zero-allocation decode (recommended for Meadow)
Pre-allocate the output buffer once and reuse it across frames to avoid GC pressure:
var decoder = new JpegDecoder();
// decode once to find dimensions
decoder.DecodeJpeg(firstFrame);
var outputBuffer = new byte[decoder.Width * decoder.Height * 3];
// reuse buffer for every subsequent frame — no heap allocation
while (true)
{
decoder.DecodeJpeg(GetNextFrame(), outputBuffer);
display.Draw(outputBuffer);
}
Cleanup
JpegDecoder holds unmanaged memory internally. Use it in a using block or call Dispose() when done:
using (var decoder = new JpegDecoder())
{
var pixels = decoder.DecodeJpeg(jpegBytes);
}
Limitations
- Baseline JPEG only — no progressive, lossless, CMYK, or 16-bit
- Minimum image size of 8×8 pixels (NanoJpeg constraint with 4:2:0 chroma subsampling)
Credits
Built on NanoJpeg.NET by Johannes Bildstein — a C# port of NanoJPEG by Martin J. Fiedler.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 is compatible. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- No dependencies.
-
.NETStandard 2.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on SimpleJpegDecoder:
| Package | Downloads |
|---|---|
|
Chibi.Ui
Package Description |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on SimpleJpegDecoder:
| Repository | Stars |
|---|---|
|
WildernessLabs/Meadow.Foundation
Unified driver and library framework for Meadow applications.
|
Updated to latest NanoJpeg.NET code with improved performance