![]() |
VOOZH | about |
dotnet add package CoreJ2K --version 2.3.0.81
NuGet\Install-Package CoreJ2K -Version 2.3.0.81
<PackageReference Include="CoreJ2K" Version="2.3.0.81" />
<PackageVersion Include="CoreJ2K" Version="2.3.0.81" />Directory.Packages.props
<PackageReference Include="CoreJ2K" />Project file
paket add CoreJ2K --version 2.3.0.81
#r "nuget: CoreJ2K, 2.3.0.81"
#:package CoreJ2K@2.3.0.81
#addin nuget:?package=CoreJ2K&version=2.3.0.81Install as a Cake Addin
#tool nuget:?package=CoreJ2K&version=2.3.0.81Install as a Cake Tool
▄█████ ▄▄▄ ▄▄▄▄ ▄▄▄▄▄ ██ ████▄ ██ ▄█▀
██ ██▀██ ██▄█▄ ██▄▄ ██ ▄██▀ ████
▀█████ ▀███▀ ██ ██ ██▄▄▄ ████▀ ███▄▄ ██ ▀█▄
A Managed and Portable JPEG2000 Codec for .NET Platforms
👁 NuGet
👁 Downloads
👁 License
👁 Release Build
👁 CodeQL Security Analysis
👁 Fuzzing
dotnet add package CoreJ2K
dotnet add package CoreJ2K.Skia
using CoreJ2K;
using SkiaSharp;
// Decode – legacy path (returns InterleavedImage, useful for sample-level access)
using var image = J2kImage.FromStream(File.OpenRead("image.jp2"));
var bitmap = image.As<SKBitmap>();
// Decode – fast path (8-bit images, skips the intermediate int[] buffer: ~4× less memory)
var bitmap2 = J2kImage.DecodeToImage<SKBitmap>(File.OpenRead("image.jp2"));
// Encode with modern API (recommended)
byte[] data = CompleteConfigurationPresets.Web
.WithCopyright("© 2025")
.Encode(imageSource);
// Or use traditional API
byte[] j2kData = J2kImage.ToBytes(bitmap);
📖 Full Documentation • 💻 More Examples • 🎯 Modern API Guide • 📦 All Packages
CoreJ2K is a pure C# implementation of the JPEG 2000 image compression standard for .NET. Modern fork of CSJ2K (C# port of jj2000), designed for .NET Standard and modern .NET platforms. Provides both encoding and decoding with 100% ISO/IEC 15444-1 Part 1 compliance.
| Feature | Description |
|---|---|
| 🏆 Standards Compliant | 100% JPEG 2000 Part 1 (ISO/IEC 15444-1) • ~50% Part 2 extensions • 27 codestream markers • 22 JP2 boxes • Part 14 JPXML |
| ⚡ Modern .NET | .NET Standard 2.0/2.1 • .NET 8/9/10 • .NET Framework 4.8.1 (via netstandard2.0) • All platforms |
| 🎯 Production Ready | Lossless/Lossy • ROI • Files >4GB • Error resilience • 2500+ tests |
| 📦 Easy Integration | NuGet packages • Simple API • SkiaSharp/ImageSharp/System.Drawing support |
| 🆓 Open Source | BSD-3-Clause • No fees • Active development • Community driven |
| ✅ For .NET Developers | ✅ For Production Use |
|---|---|
| Native C# (no P/Invoke) | Battle-tested & stable |
| Memory safe (managed code) | Complete Part 1 compliance |
| Thread-safe operations | Medical imaging (DICOM) ready |
| Familiar NuGet install | GIS/geospatial compatible |
| Works with all image libraries | Interoperable with all decoders |
Comparison: CoreJ2K is the only open-source .NET library with full JPEG 2000 Part 1 compliance and complete pointer marker read/write support.
dotnet add package CoreJ2K
# SkiaSharp (recommended - cross-platform)
dotnet add package CoreJ2K.Skia
# ImageSharp (modern .NET)
dotnet add package CoreJ2K.ImageSharp
# System.Drawing (Windows)
dotnet add package CoreJ2K.Windows
# Pfim (DDS/TGA)
dotnet add package CoreJ2K.Pfim
using CoreJ2K;
using SkiaSharp;
// From file
var image = J2kImage.FromStream(File.OpenRead("image.jp2"));
var bitmap = image.As<SKBitmap>();
// From bytes
byte[] data = File.ReadAllBytes("image.j2k");
var image2 = J2kImage.FromBytes(data);
// Save as PNG
using var output = File.OpenWrite("output.png");
bitmap.Encode(output, SKEncodedImageFormat.Png, 90);
For the common 8-bit decode-and-display path, DecodeToImage<T> writes pixels directly into the backend image, skipping the intermediate int[] buffer that InterleavedImage would normally allocate. Use this whenever you don't need sample-level access after decoding.
using CoreJ2K;
using SkiaSharp;
// From stream – fast path (8-bit components: ~1 B/sample peak vs ~5 B/sample legacy)
SKBitmap bitmap = J2kImage.DecodeToImage<SKBitmap>(File.OpenRead("image.jp2"));
// From byte array
SKBitmap bitmap2 = J2kImage.DecodeToImage<SKBitmap>(File.ReadAllBytes("image.j2k"));
// From file path
SKBitmap bitmap3 = J2kImage.DecodeFileToImage<SKBitmap>("image.jp2");
When to use the legacy
FromStreampath instead:
- You need to inspect or modify individual samples (
GetSample,SetComponent,Crop, …).- Any component has bit depth > 8 (the fast path falls back automatically, but you may also call
FromStreamdirectly).
| API | Peak memory (8-bit RGB) | Best for |
|---|---|---|
DecodeToImage<T> |
~1 B/sample | Display / encode pipeline |
FromStream().As<T>() |
~5 B/sample | Sample inspection / editing |
// For large tiled images with TLM markers
var image = J2kImage.FromStream(File.OpenRead("large_tiled.jp2"));
// Check if fast tile access is available
if (decoder.SupportsFastTileAccess())
{
Console.WriteLine("✓ TLM markers present - instant tile access!");
// Jump directly to tile 500 (out of 1000) - O(1) operation!
bool usedFast = decoder.SeekToTile(500); // Instant!
// Or access by coordinates
decoder.SetTile(x, y); // Also uses TLM fast path internally
}
else
{
Console.WriteLine("⚠ No TLM - sequential access only");
// Falls back to O(n) sequential parsing
decoder.SetTile(x, y); // Must parse all previous tiles
}
// Performance improvements with TLM:
// - Access tile 100 (of 1000): 1000x faster
// - GIS map server: ~30s → ~0.03s
// - Medical imaging: ~30s → ~0.05s
Creating images with TLM markers:
// Enable TLM markers for fast random access
var config = new CompleteEncoderConfigurationBuilder()
.ForGeospatial() // Or any preset
.WithTiles(t => t.SetSize(512, 512))
.WithPointerMarkers(p => p.UseTLM(true)) // Enable TLM!
.Build();
byte[] data = J2kImage.ToBytes(bitmap, config);
// Decoder can now seek to any tile instantly!
// Default (high quality)
byte[] j2k = J2kImage.ToBytes(bitmap);
// Lossless
var lossless = new ParameterList { ["lossless"] = "on", ["file_format"] = "on" };
byte[] data = J2kImage.ToBytes(bitmap, lossless);
// Lossy with target bitrate
var lossy = new ParameterList { ["rate"] = "0.5", ["file_format"] = "on" };
byte[] compressed = J2kImage.ToBytes(bitmap, lossy);
| Platform | Framework | Package |
|---|---|---|
| Windows | .NET 8/9, Framework 4.8.1, Standard 2.x | CoreJ2K, CoreJ2K.Windows |
| Linux | .NET 8/9, Standard 2.x | CoreJ2K, CoreJ2K.Skia |
| macOS | .NET 8/9, Standard 2.x | CoreJ2K, CoreJ2K.Skia |
| Mobile | .NET 8/9 (MAUI), Xamarin | CoreJ2K, CoreJ2K.Skia |
| Web | .NET 8/9, ASP.NET Core | CoreJ2K, CoreJ2K.ImageSharp |
CoreJ2K 1.3.0+ includes a comprehensive, fluent configuration API that makes JPEG 2000 encoding easier and more intuitive than ever.
using CoreJ2K.Configuration;
// One-liner encoding with preset
byte[] webImage = CompleteConfigurationPresets.Web
.WithCopyright("© 2025")
.Encode(imageSource);
// Medical imaging (lossless)
byte[] medical = CompleteConfigurationPresets.Medical
.WithMetadata(m => m
.WithComment("Patient: Anonymous")
.WithComment("Study: CT Scan"))
.Encode(dicomImage);
// High-quality photography
byte[] photo = CompleteConfigurationPresets.Photography
.WithCopyright("© 2025 Photographer")
.WithComment("Sunset over mountains")
.Encode(photograph);
// Lossless (perfect reconstruction)
var config = new CompleteEncoderConfigurationBuilder()
.ForLossless()
.Build();
// High quality (90% quality)
var config = new CompleteEncoderConfigurationBuilder()
.ForHighQuality()
.Build();
// Balanced (75% quality)
var config = new CompleteEncoderConfigurationBuilder()
.ForBalanced()
.Build();
// High compression
var config = new CompleteEncoderConfigurationBuilder()
.ForHighCompression()
.Build();
// Medical imaging - lossless with appropriate settings
.ForMedical()
// Archival storage - very high quality + error resilience
.ForArchival()
// Web delivery - progressive + balanced quality
.ForWeb()
// Thumbnail generation - fast + small
.ForThumbnail()
// Geospatial/GIS - spatial browsing + tiled
.ForGeospatial()
// Streaming - quality progressive
.ForStreaming()
var config = new CompleteEncoderConfigurationBuilder()
.WithQuality(0.85)
.WithQuantization(q => q
.UseExpounded()
.WithBaseStepSize(0.008f)
.WithGuardBits(2))
.WithWavelet(w => w
.UseIrreversible_9_7()
.WithDecompositionLevels(6))
.WithProgression(p => p.UseLRCP())
.WithTiles(t => t.SetSize(512, 512))
.WithMetadata(m => m
.WithComment("Custom configuration")
.WithCopyright("© 2025")
.WithXml(customMetadata))
.Build();
byte[] data = J2kImage.ToBytes(image, config);
📚 Complete Guides:
var p = new ParameterList();
p["lossless"] = "on";
p["file_format"] = "on";
byte[] data = J2kImage.ToBytes(bitmap, p);
var p = new ParameterList();
p["rate"] = "0.5"; // 0.5 bits/pixel
p["file_format"] = "on"; // JP2 wrapper
p["tiles"] = "1024 1024"; // Tile size
p["Wlev"] = "5"; // Decomposition levels
byte[] data = J2kImage.ToBytes(bitmap, p);
var p = new ParameterList();
p["rate"] = "0.2";
p["Alayers"] = "0.015 +20 2.0 +10"; // Multiple layers
p["Aptype"] = "res"; // Resolution progression
byte[] data = J2kImage.ToBytes(bitmap, p);
Common encoder parameters (case-sensitive):
| Parameter | Example Value | Description |
|---|---|---|
lossless |
"on" / "off" |
Enable lossless compression |
rate |
"0.5" |
Target bitrate (bits per pixel) |
file_format |
"on" / "off" |
Use JP2 container format |
tiles |
"1024 1024" |
Tile dimensions (width height) |
Wlev |
"5" |
Wavelet decomposition levels |
Wcboff |
"0 0" |
Code-block partition origin |
Ffilters |
"w5x3" / "w9x7" |
Wavelet filter (reversible/irreversible) |
Qtype |
"reversible" / "expounded" |
Quantization type |
Aptype |
"res" / "layer" / "pos-comp" |
Progression order |
Alayers |
"0.015 +20 2.0" |
Layer rate specification |
Mct |
"on" / "off" |
Multi-component transform |
Psop |
"on" / "off" |
SOP markers (error resilience) |
Peph |
"on" / "off" |
EPH markers (error resilience) |
Note: Parameter names match internal encoder conventions (no leading dashes).
As<T>() to convert to platform types (e.g., SKBitmap). Carries a full int[] sample buffer — use DecodeToImage<T> instead when you only need the final bitmap.InterleavedImage entirely for 8-bit images (~4× less peak memory). Falls back to FromStream + As<T> automatically for >8-bit components.params["key"] = "value"NEW in CoreJ2K: Support for TLM (Tile-part Lengths) markers enables O(1) random tile access instead of O(n) sequential parsing. This provides 100-1000x performance improvements for:
// Create tiled image with TLM markers
var config = new CompleteEncoderConfigurationBuilder()
.WithTiles(t => t.SetSize(512, 512))
.WithPointerMarkers(p => p.UseTLM(true)) // Enable TLM
.Build();
byte[] data = J2kImage.ToBytes(image, config);
var decoder = CreateDecoder(stream);
// Check TLM availability
if (decoder.SupportsFastTileAccess())
{
// O(1) fast path - instant seeking
decoder.SeekToTile(500); // Jump directly to tile 500
}
else
{
// O(n) sequential fallback
decoder.SetTile(x, y); // Parse all previous tiles
}
Performance Impact:
| Operation | Without TLM | With TLM | Speed-up |
|---|---|---|---|
| Access tile 100 (of 1000) | 1000ms | 1ms | 1000x |
| Access tile 1000 (of 10K) | 30s | 1ms | 30,000x |
| Decode 10 random tiles | 30s | 0.1s | 300x |
CoreJ2K achieves 100% JPEG 2000 Part 1 (ISO/IEC 15444-1) compliance:
| Component | Support | Details |
|---|---|---|
| Codestream Markers | ✅ 27/27 (100%) | All main header, tile-part, and packet markers |
| JP2 File Format | ✅ 22/22 boxes (100%) | All required and optional boxes |
| Wavelet Transforms | ✅ Complete | 5-3 (reversible), 9-7 (irreversible) |
| Quantization | ✅ Complete | Reversible, scalar derived, scalar expounded |
| Entropy Coding | ✅ Complete | Full MQ coder (arithmetic coding) |
| ROI Encoding | ✅ Complete | Max-shift method, arbitrary shapes |
| Progression Orders | ✅ All 5 | LRCP, RLCP, RPCL, PCRL, CPRL |
| Error Resilience | ✅ Complete | SOP/EPH markers, segmentation symbols |
| Pointer Markers | ✅ Full R/W | PPM, PPT, PLM, PLT, TLM (read and write) |
| TLM Fast Access | ✅ NEW! | O(1) random tile seeking • 100-1000x speed-up |
| Extended Length | ✅ Complete | XLBox support for files >4GB |
| ICC Profiles | ✅ Complete | Full color management support |
| Metadata | ✅ Complete | XML, UUID, resolution, channels, Part 14 JPXML |
Compliance Scores:
CoreJ2K implements the most commonly used JPEG 2000 Part 2 (ISO/IEC 15444-2) features end-to-end (encode and decode):
| Feature | Markers | Read | Write | Notes |
|---|---|---|---|---|
| JPX File Format | ASOC, NLST, DTBL, FTBL, FLST, CREF, JPCH, JPLH | ✅ | ✅ | Full JPX box set + jpx brand |
| Extended Capabilities | CAP (0xFF50) | ✅ | ✅ | Auto-emitted for any Part 2 codestream |
| Variable DC Offset | DCO (0xFF70) | ✅ | ✅ | Per-component integer DC shifts |
| Non-linearity Transform | NLT (0xFF76) | ✅ | ✅ | Gamma (power-law) and LUT types |
| Multi-Component Transform | MCT/MCC/MCO (0xFF74–77) | ✅ | ✅ | Matrix decorrelation, dependency lifting, 5/3 wavelet |
| Component Bit Depth | CBD (0xFF78) | ✅ | ✅ | Per-component depth signaling |
| Arbitrary Decomposition | DFS/ADS (0xFF72–73) | ❌ | ❌ | Non-standard wavelet tree shapes |
| Arbitrary Transform Kernels | ATK (0xFF79) | ❌ | ❌ | Custom wavelet filter coefficients |
| Trellis Coded Quantization | — | ❌ | ❌ | Alternative entropy path |
| Single Sample Overlap | — | ❌ | ❌ | Tie-in with DFS/ADS |
Coverage: ~50% — all production-relevant per-sample and multi-component transforms are implemented. Remaining gaps are the wavelet-shape and custom-kernel features (ATK, DFS/ADS).
API note: Pass Part 2 parameters to
J2kImage.ToBytes:// DCO: per-component DC offset var dco = new DCOMarkerSegment { Offsets = new[] { 10, -3, 20 } }; // NLT: gamma non-linearity var nlt = new NLTMarkerSegment { Type = NLTType.Gamma, GammaExponent = 2.2 }; // Encode with Part 2 extensions (Rsiz + CAP written automatically) byte[] data = J2kImage.ToBytes(src, metadata, pl, nltSegments: new[] { nlt }, dcoSegment: dco);
Quick comparison with major JPEG 2000 libraries:
| Feature | CoreJ2K | Kakadu | OpenJPEG | JJ2000 | LEADTOOLS |
|---|---|---|---|---|---|
| Part 1 Compliance | ✅ 100% | ✅ 100% | ⚠️ ~95% | ⚠️ ~90% | ✅ 100% |
| Part 2 Coverage | ⚠️ ~50% | ✅ ~95% | ⚠️ ~20% | ❌ 0% | ✅ ~80% |
| Language | C# | C++ | C | Java | C/C++ |
| License | BSD (Free) | Commercial | BSD (Free) | JJ2000 | Commercial |
| Cost | ✅ Free | ❌ $$$$ | ✅ Free | ✅ Free | ❌ $$$$ |
| .NET Native | ✅ | ❌ | ⚠️ P/Invoke | ❌ | ✅ |
| Memory Safety | ✅ Managed | ⚠️ Manual | ⚠️ Manual | ✅ Managed | ⚠️ Manual |
| Pointer Markers | ✅ Full R/W | ✅ Full R/W | ⚠️ Read only | ⚠️ Read only | ✅ Full R/W |
| Files >4GB | ✅ Yes | ✅ Yes | ⚠️ Limited | ❌ No | ✅ Yes |
| Part 14 JPXML | ✅ Full R/W | ⚠️ Partial | ❌ No | ❌ No | ❌ No |
| Active Dev | ✅ 2026 | ✅ 2025 | ✅ 2025 | ❌ 2010 | ✅ 2025 |
CoreJ2K Unique Advantages:
📊 View detailed comparison tables →
CoreJ2K supports multiple parts of ISO/IEC 15444:
| Part | Name | Read | Write | Status |
|---|---|---|---|---|
| Part 1 | Core Coding System | ✅ Full | ✅ Full | 100% Complete |
| Part 2 | Extensions | ⚠️ Partial | ⚠️ Partial | ~50% — JPX boxes, DCO, NLT, MCT family; ATK/DFS pending |
| Part 4 | Conformance Testing | N/A | N/A | 100% Complete |
| Part 14 | XML Representation (JPXML) | ✅ Full | ✅ Full | 100% Complete |
Part 1 covers 99% of real-world JPEG 2000 usage including:
📖 View complete specification details →
If CoreJ2K helps your project:
Contributions welcome! Ways to help:
BSD 3-Clause License
Copyright (c) 1999-2000 JJ2000 Partners
Copyright (c) 2007-2012 Jason S. Clary
Copyright (c) 2013-2016 Anders Gustafsson, Cureos AB
Copyright (c) 2024-2026 Sjofn LLC
Free to use in commercial and open-source projects. No licensing fees.
<div align="center">
Made with ❤️ for the .NET community
👁 GitHub stars
👁 GitHub issues
👁 Commit Activity
</div>
<details> <summary><b>Click to expand full library comparison</b></summary>
| Feature | CoreJ2K | Kakadu | OpenJPEG | JJ2000 | JasPer | Pillow | LEADTOOLS |
|---|---|---|---|---|---|---|---|
| Part 1 Compliance | ✅ 100% | ✅ 100% | ⚠️ ~95% | ⚠️ ~90% | ⚠️ ~85% | ⚠️ ~70% | ✅ 100% |
| Part 2 Coverage | ⚠️ ~50% | ✅ ~95% | ⚠️ ~20% | ❌ 0% | ❌ 0% | ❌ 0% | ✅ ~80% |
| Decode | ✅ Full | ✅ Full | ✅ Full | ✅ Full | ✅ Full | ✅ Basic | ✅ Full |
| Encode | ✅ Full | ✅ Full | ✅ Full | ✅ Full | ✅ Full | ❌ No | ✅ Full |
| JP2 File Format | ✅ Full | ✅ Full | ✅ Full | ✅ Full | ⚠️ Partial | ⚠️ Basic | ✅ Full |
| Lossless | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
| Lossy | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
| Error Resilience (SOP/EPH) | ✅ Full | ✅ Full | ✅ Full | ✅ Full | ⚠️ Partial | ❌ No | ✅ Full |
| Pointer Markers (PPM/PPT/PLM/PLT/TLM) | ✅ Full R/W | ✅ Full R/W | ⚠️ Read only | ⚠️ Read only | ❌ No | ❌ No | ✅ Full R/W |
| ROI (Region of Interest) | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ⚠️ Limited | ❌ No | ✅ Yes |
| Extended Length (XLBox) | ✅ Full | ✅ Full | ⚠️ Limited | ❌ No | ❌ No | ❌ No | ✅ Full |
| Multi-component Transform | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ⚠️ Limited | ⚠️ Limited | ✅ Yes |
| Tile-based Processing | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes | ⚠️ Limited | ✅ Yes |
| Progression Orders | ✅ All 5 | ✅ All 5 | ✅ All 5 | ✅ All 5 | ⚠️ Limited | ⚠️ Limited | ✅ All 5 |
| Quality Layers | ✅ Unlimited | ✅ Unlimited | ✅ Unlimited | ✅ Unlimited | ⚠️ Limited | ⚠️ Limited | ✅ Unlimited |
| ICC Profile Support | ✅ Full | ✅ Full | ✅ Full | ⚠️ Basic | ⚠️ Basic | ✅ Full | ✅ Full |
| Metadata (XML/UUID) | ✅ Full | ✅ Full | ⚠️ Partial | ⚠️ Partial | ❌ No | ⚠️ Basic | ✅ Full |
| Part 14 JPXML (XML metadata representation) | ✅ Full R/W | ⚠️ Partial | ❌ No | ❌ No | ❌ No | ❌ No | ❌ No |
| Palette/Component Mapping | ✅ Full | ✅ Full | ✅ Full | ⚠️ Partial | ⚠️ Partial | ❌ No | ✅ Full |
| Aspect | CoreJ2K | Kakadu | OpenJPEG | JJ2000 | JasPer | Pillow | LEADTOOLS |
|---|---|---|---|---|---|---|---|
| Language | C# | C++ | C | Java | C | Python/C | C/C++ |
| License | BSD (Open) | Commercial | BSD (Open) | JJ2000 (Open) | MIT (Open) | PIL (Open) | Commercial |
| Cost | ✅ Free | ❌ $$$$ | ✅ Free | ✅ Free | ✅ Free | ✅ Free | ❌ $$$$ |
| Active Development | ✅ Active | ✅ Active | ✅ Active | ❌ Abandoned | ⚠️ Minimal | ✅ Active | ✅ Active |
| Last Update | 2026 | 2025 | 2025 | 2010 | 2022 | 2025 | 2025 |
| Platform Support | .NET all | All | All | JVM | All | All | Windows mainly |
| Cross-platform | ✅ Full | ✅ Full | ✅ Full | ✅ Full | ✅ Full | ✅ Full | ⚠️ Limited |
| Memory Safety | ✅ Managed | ⚠️ Manual | ⚠️ Manual | ✅ Managed | ⚠️ Manual | ✅ Managed | ⚠️ Manual |
| Multi-threading | ✅ Safe | ✅ Yes | ✅ Yes | ⚠️ Limited | ⚠️ Limited | ✅ Yes | ✅ Yes |
| SIMD Optimization | ✅ Yes (AVX/auto-vec) | ✅ Full | ✅ Full | ❌ No | ❌ No | ⚠️ Limited | ✅ Full |
| Metric | CoreJ2K | Kakadu | OpenJPEG | JJ2000 | JasPer | Pillow | LEADTOOLS |
|---|---|---|---|---|---|---|---|
| Encoding Speed | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Decoding Speed | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Compression Ratio | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Image Quality | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Memory Efficiency | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Large File Support (>4GB) | ✅ Yes | ✅ Yes | ⚠️ Limited | ❌ No | ❌ No | ❌ No | ✅ Yes |
| Aspect | CoreJ2K | Kakadu | OpenJPEG | JJ2000 | JasPer | Pillow | LEADTOOLS |
|---|---|---|---|---|---|---|---|
| Documentation | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| API Simplicity | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Code Examples | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| NuGet/Package Manager | ✅ Yes | ❌ No | ✅ Yes | ⚠️ Maven | ❌ Manual | ✅ PyPI | ✅ Yes |
| Community Support | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Issue Tracking | ✅ GitHub | ⚠️ Private | ✅ GitHub | ❌ Closed | ✅ GitHub | ✅ GitHub | ⚠️ Private |
| Integration Ease | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Use Case | CoreJ2K | Kakadu | OpenJPEG | JJ2000 | JasPer | Pillow | LEADTOOLS |
|---|---|---|---|---|---|---|---|
| .NET Applications | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐ | ⭐⭐ | ⭐ | ⭐⭐⭐⭐⭐ |
| Cross-platform Apps | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| Web Services | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Mobile Apps | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| Medical Imaging | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Geospatial/GIS | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Archive/Digital Libraries | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 was computed. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 is compatible. |
| .NET Framework | net461 net461 was computed. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 5 NuGet packages that depend on CoreJ2K:
| Package | Downloads |
|---|---|
|
CoreJ2K.Skia
.NETStandard JPEG-2000 codec library with SkiaSharp support |
|
|
Melville.Pdf.LowLevel
Reads and writes PDF files as a graph of PDF objects. |
|
|
CoreJ2K.Windows
.NETStandard JPEG-2000 codec library with System.Drawing support |
|
|
CoreJ2K.ImageSharp-Official
Official CoreJ2K .NETStandard JPEG-2000 codec library with ImageSharp support |
|
|
CoreJ2K.Pfim
.NETStandard JPEG-2000 codec library with Pfim support |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.3.0.81 | 590 | 6/12/2026 |
| 2.2.2.72 | 1,200 | 5/26/2026 |
| 2.2.1.68 | 291 | 5/22/2026 |
| 2.2.0.62 | 277 | 5/22/2026 |
| 2.1.2.38 | 9,090 | 2/5/2026 |
| 2.1.1.18 | 246 | 2/3/2026 |
| 2.1.0.101 | 2,734 | 12/15/2025 |
| 2.0.0.97 | 391 | 12/14/2025 |
| 1.3.2.80 | 2,162 | 11/15/2025 |
| 1.3.1.77 | 434 | 11/13/2025 |
| 1.3.0.75 | 713 | 11/11/2025 |
| 1.2.2.68 | 1,074 | 11/6/2025 |
| 1.2.1.63 | 571 | 10/31/2025 |
| 1.2.0.55 | 1,669 | 10/12/2025 |
| 1.1.2.50 | 4,509 | 6/14/2025 |
| 1.1.1.48 | 2,419 | 4/30/2025 |
| 1.0.7.39 | 471 | 4/26/2025 |