ImageSharp Versions Save

:camera: A modern, cross-platform, 2D Graphics library for .NET

v1.0.2

3 years ago

Advisories and Breaking Changes

  • None

Release Notes

Bug Fixes

Area:Api

Area:Performance

Area:Build

v1.0.1

3 years ago

Advisories and Breaking Changes

  • None

Release Notes

Bug

Other

v1.0.0

3 years ago

Advisories and Breaking Changes

Area:Api

Release Notes

Area:Api

Area:Formats

Area:Performance

Bug

  • Change position guard from MustBeLessThanTo to MustBeLessThanOrEqualTo - #1291 via @brianpopow

Area:Build

Area:Build

Documentation

v1.0.0-rc.3

3 years ago

Area:Api

Bug

Area:Build

Other

v1.0.0-rc.2

3 years ago

Release Notes

Reintroduces the Apache 2.0 License as the open source license.

Area:Performance

Bug

Enhancement

Area:Build

Formats:Tga

Other

v1.0.0-rc.1

4 years ago

Release Notes

Milestone: 1.0.0-rc1

Area:Api

Area:Bug

Area:Build

Area:Codequality

Area:Dithering

Area:Documentation

Area:Enhancement

Area:Formats:Jpeg

Area:Formats:Gif

Area:Formats:Png

Area:Formats:Tga

Area:Memory

Area:Metadata:Exif

Area:Metadata:Iptc

Area:Performance

Other

Unit Tests

v1.0.0-beta7

4 years ago

v1.0.0-beta6

5 years ago

Improvements since beta-5

Resize

  • Significant speed-up in our resizer (~2.5x). On .NET Core 2.1 now we downscale images faster than System.Drawing (#731, #781)
  • Using ~30% less memory during resize (#731, #781)
  • #719 - Keep one pixel if aspect ratio respecting resize would set a dimension to 0.

Formats

JPEG (& Exif)

  • Read Jpeg-s with incorrect App0 markers (#722)
  • Decode interleaved progressive jpegs correctly (#724)
  • Support 12 bit jpegs (#784)
  • #698 - Allow several invalid data types when reading the exif resolution.
  • #699 - Fix EXIF overflow and Jpeg decoding
  • #768 - Various Jpeg optimizations
  • #801 - #797 throw ImageFormatException when no StartOfFrame marker is found
  • #804 - Use bounds checks in Huffman ctr. Fix #798

PNG

  • Preserve PNG trancparency metadata after decoding. (#764, #693)
  • #705 - Png and Wu Quantizer fixes
  • #712 - Add 1, 2, and 4 bit Png Encoding
  • #740 - Use scaled luminance trns comparison.

BMP

  • #676 - Fix 1 bit bmp decoding and add extra test images.
  • #791 - WIP: Adds support for Decoding Bitmaps with 16 bytes headers
  • #792 - WIP: Fix for Windows 2.0 or OS/2 1.x bitmaps only use 3 bytes per color palette entry
  • #796 - Decoding Bitmaps with BITFIELDS masks
  • #812 - Support for decoding RLE4 encoded bitmaps
  • #813 - Adds support for OS/2 version 2 bitmaps

GIF

  • #770 - Fix infinite loop when a GIF prematurely terminates

Color Spaces and Filters

  • Publish Color Space and transformation API-s (#664)
  • Introduce ColorMatrix and fix Color Filters, making them CSS-compatible (#806)
  • #734 - Refactor Companding
  • #736 - Write float values using the invariant culture.

Pixel Types

  • Add Gray8 and Gray16 Pixel Formats and clean up IPixel (#729)
  • #754 - Imrpoved Gray8 accuracy
  • #728 - Add ToString implementations to Bgr24 and Bgra32
  • #744 - Refactor & simplify conversion API's
  • #680 - Optimize Equals & GetHashCode methods within PixelFormats

Drawing and text

  • The .DrawImage() extension method works across pixel types. (image<Rgba>.Mutate(x => x.DrawImage( Image<Argb>))) (#686)
  • #765 - Optimize filling a region with a solid brush when antialias is off
  • #755 - Prevent text wandering from baseline
  • #756 - constrain destination span and scanline to same length

Transformations

  • Introduce AffineTransformBuilder and ProjectiveTransformBuilder to help dealing with composite transformations. (#775)
  • #788 - Fix Projective Transforms

Compatibility

  • Improved Xamarin iOS compatibility by providing a workaround for AOT issues (#767, #785)
  • Discontinue netstandard1.1 support (#737)
  • Discontinue .NET Core 2.0 support (#681)
  • #746 - Cross target NET472 and enable extended intrinsics behind symbol
  • #708 - Fix issue on mono <= 5.14 when reading multiple png data chunks.

Other

New API-s and API changes

  • Split pixel blending and alpha composition API-s (#641, #679)
  • Add API-s to preserve format-specific metadata after decoding images, so it won't be lost when they are being reencoded. (#693)
    • Some properties impemented for Gif, Png and Jpeg
    • Png stuff extended in #764
    • Introduced IDeepClonable to ensure metadata objects are properly cloned (#707)
  • Image formats are now public (#701)
  • #741 - Add generic palette quantizer, refactor + werner palette

Optimizations

  • #671 - Use span directly for DetectFormat
  • #710 - Optimized parallel pixel processing
  • #742 - Clean up and optimize byte<->float and Rgba32 <-> Vector4 conversion
  • #751 - Introduce optimized conversion methods for RGBA-like types
  • #771 - Avoid doing the same thing multiple times

Bug fixes

  • #684 - Don't allow duplicate formats in configuration.
  • #715 - Use clean buffer when detecting format
  • #753 - Added missing length check that caused an ArgumentNullException (#750)
  • #726 - Throw when crop rectangle exceeds source bounds.
  • Mathematically correct Gaussian Blur (#789)

Internal changes without visible effects

#678, #682, #689, #717, #720, #727, #747, #760, #769, #773, #772, #783, #691, #706, #709, #761, #759, #780, #782

Special thanks to regular contributors

  • Jason Nelson (@iamcarbon) - Code sanity, optimizations
  • @jongleur1983 - Code sanity, optimizations
  • Vicente Penades (@vpenades) - Separating Color Blending from Alpha Composition
  • Brian Popow (@brianpopow) - Better BMP support
  • Dan Manning (@dmanning23) - AOT seeding for Xamarin iOS
  • @devedse - Png metadata
  • Stephan Vedder (@feliwir) - 12 bit Jpeg support

Blog post (including long term licensing plans)

https://sixlabors.com/blog/beta-six-labors/

v1.0.0-beta5

5 years ago

Breaking changes

  • All processing extension methods have been moved to the SixLabors.ImageSharp.Processing namespace to improve API discoverability for vanilla VS and VS Code users. (#645) Sub namespaces like SixLabors.ImageSharp.Processing.Transforms do no longer exist! You have to remove these using statements from your code:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing; // The only namespace required for processing extensions!
u̶s̶i̶n̶g̶ ̶S̶i̶x̶L̶a̶b̶o̶r̶s̶.̶I̶m̶a̶g̶e̶S̶h̶a̶r̶p̶.̶P̶r̶o̶c̶e̶s̶s̶i̶n̶g̶.̶T̶r̶a̶n̶s̶f̶o̶r̶m̶s̶;̶ // COMPILATION ERROR!
  • image.SavePixelData() APIs have been removed in favour of image.GetPixelSpan() (#628)
  • Configuration.ParallelOptions has been replaced with Configuration.MaxDegreeOfParallelism (#667)

Improvements since beta 4:

  • Fixed all remaining issues with .NET Core 2.1
  • Jpeg improvements:
    • ~28% faster Jpeg Decoder (#643)
    • Fix #624 (Decoder bug, -> PR #625)
    • Fix #646 (ICC decoding bug, -> PR #647)
  • Introduce PixelResolutionUnit in ImageMetaData, fix #490 (#649)
  • PNG improvements
    • Exif support for PNG (#616)
    • Support for 16bit PNGs (#613)
  • Optimized font rendering by caching glyphs (#614)
  • Improved Gif and Quantization performance when using diffusion by ~600% (#637)
  • Cross target .NET Core 2.1 (#604)
  • Histogram Equalization (#644)
  • Deeper System.Memory API integration:
    • Span overloads for Image.Load() and Image.DetectFormat() (#618)
    • image.GetPixelSpan() and image.GetPixelRowSpan() extension methods for fast pixel data manipulation (#607)
    • Image.WrapMemory(...) for native interop use-cases (#660)
    • The MemoryAllocator API is now public and shared across all SixLabors projects (#665)

NuGet

https://www.nuget.org/packages/SixLabors.ImageSharp/1.0.0-beta0005 https://www.nuget.org/packages/SixLabors.ImageSharp.Drawing/1.0.0-beta0005

v1.0.0-beta3

6 years ago

Improvements since beta 2

  • Breaking change: Refactored the namespaces to logical groups based on functionality.
  • Introduced a full memory management API that allows fine grained control of how ImageSharp manages large buffers.
    • For the default pooling memory management implementation we managed to halve the memory footprint of the library without significant loss in speed.
  • Made codecs easier to use. The performance of the Jpeg decoder is doubled since the first beta!
  • Introduced a new metadata-only decoding API with the help of the community.
  • Introduced new affine transform methods that allow the composition of affine transforms.
  • Refactored all filters (Hue, Brightness, Saturation etc) to match the behaviour described in the W3C specification.
  • Introduced static instances of reusable algorithms for use as method parameters.
  • Fixed the resampling processes to correctly blend semi-transparent output.
  • Many other performance improvements and bug fixes.

Blog post

https://sixlabors.com/blog/beta-3-is-a-magic-number/