Releases: SixLabors/ImageSharp
Releases · SixLabors/ImageSharp
v2.0.0
Advisories and Breaking Changes
Major breaking changes
- Due to the new unmanaged memory engine, we had to redesign our pixel processing and low level memory management API-s. The most visible change is that the
GetPixelRowSpan()
methods have been replaced withProcessPixelRows()
variants. This was done to guarantee memory safety. For more details see:- 2.0 documentation on Working with Pixel Buffers
- 2.0 documentation on Memory Management
- Pixel processing breaking changes & API discussion - #1739
- Png and Jpeg now decode to pixels formats closer to the encoded format when using the non-generic API. (For example Jpeg now decodes to
Image<Rgb24>
instead ofImage<Rgba32>
.) This was done to reduce memory usage and remove some surprises for users. - We've dropped the old NetStandard 1.3 target. This targeted frameworks not supported by Microsoft and was adding overhead to development.
Complete list of breaking PR-s
- Add Abgr32 pixel type, extend IPixel - #1886 via @ynse01, @antonfirsov, @JimBobSquarePants
- Remove netstandard 1.3 target - #1888 via @JimBobSquarePants
- ImageFormatDetector Configuration Cleanup - #1936 via @JimBobSquarePants
- Unmanaged pooling MemoryAllocator - #1730 via @antonfirsov
- Png - Preserve Pixel Format for Non-generic decode. - #1861 via @JimBobSquarePants
- Decode Jpeg into Rgb24 when pixel type not specified. - #1773
Release Notes
API
- Remove HistogramEqualizationOptions.Default - #1840 via @antonfirsov
- Added missing CancellationToken parameters to Image - #1856 via @justinbhopper
- Expose ImageFrame.PixelBuffer - #1906 via @JimBobSquarePants
- Change the constructor of PixelTypeInfo and ImageMetadata from internal to public so that a user can implement IImageInfo - #1929 via @jz5, @antonfirsov, @JimBobSquarePants
Area:Build
- Update codcov and config - #1820 via @JimBobSquarePants
- Use a scheduled job for codecov - #1934 via @JimBobSquarePants
Area:Formats
- Add support for Portable Bitmap images - #1851 via @ynse01, @antonfirsov, @brianpopow, @JimBobSquarePants
Area:Performance
- Webp: Use byte arrays instead of Dictionary's for lookups - #1800 via @brianpopow
- Add sse2 version of select - #1804 via @brianpopow
- Add SSE2 versions of ClampedAddSubtractFull and ClampedAddSubtractHalf - #1805 via @brianpopow, @JimBobSquarePants
- SSE41 version of Hadamard transform - #1810 via @brianpopow
- Add SSE41 version of Quantize block - #1811 via @brianpopow
- Add SSE2 version of Mean16x4 - #1814 via @brianpopow
- Add SSE2 version of Vp8Sse4X4 - #1817 via @brianpopow
- Hoist some of the calculations from loops of 3DMoments() - #1818 via @kunalspathak, @brianpopow
- Add sse2 version of inverse transform - #1819 via @brianpopow, @JimBobSquarePants
- Add AVX version of CollectColorBlueTransforms and CollectColorRedTransforms - #1824 via @brianpopow, @JimBobSquarePants
- Add AVX version of TransformColor and TransformColorInverse - #1830 via @brianpopow, @JimBobSquarePants
- Webp improvements - #1846 via @brianpopow
- Jpeg new IDCT & fused zigzag/transpose steps - #1847 via @br3aker, @JimBobSquarePants
- Add AVX2 version of AddVector - #1849 via @brianpopow
- Add SSE41 version of UpSample - #1836 via @brianpopow, @JimBobSquarePants
- Add AVX2 versions of CombinedShannonEntropy - #1848 via @brianpopow
- Add SSE2 version of FTransform - #1852 via @brianpopow, @JimBobSquarePants
- Add AVX2 version of Vp8_Sse4X4 - #1860 via @brianpopow
- Jpeg codebase cleanup - #1853 via @br3aker
- Add AVX2 version of QuantizeBlock - #1857 via @brianpopow, @JimBobSquarePants
- Add SSE2 version of TransformOne and TransformTwo - #1862 via @brianpopow, @JimBobSquarePants
- Add SSE2 version for webp Filter methods - #1871 via @brianpopow, @JimBobSquarePants
- Add AVX2 version of CollectHistogram - #1882 via @brianpopow
- Add SSE2 and AVX2 versions of Vp8_Sse16X16 and Vp8_Sse16X8 - #1881 via @brianpopow, @JimBobSquarePants
- Add AVX2 version of GetResidualCost and SSE2 version of SetCoeffs - #1902 via @brianpopow
- SSE2 / AVX2 of webp AlphaDecoding - #1930 via @brianpopow, @JimBobSquarePants
- Jpeg encoder optimization via removing second transpose call from FDCT - #1958 via @br3aker
Bug
- Fix gaussian blurring changing the blur colour when transperancy is used - #1834 via @Turnerj
- Make ColorDistanceCache non-readonly - #1841 via @antonfirsov, @JimBobSquarePants
- Use Rgb24 for Async Jpeg Decode - #1859 via @JimBobSquarePants
- Fix Color conversion for differing types - #1865 via @JimBobSquarePants
- Allocate clean buffer in AnalyzeEntropy - #1873 via @brianpopow
- Fixed jpeg encoder last bytes flushing bug - #1876 via @br3aker
- Tiff: Add maximum IFD threshold - #1892 via @brianpopow
- Fixed Jpeg ...
v1.0.4
Advisories and Breaking Changes
- None
Release Notes
Bug Fixes
- Fix a few uses of DeflateStream.Read - #1707 via @stephentoub
v1.0.3
Advisories and Breaking Changes
- None
Release Notes
API Enhancements
- Add new PixelAlphaRepresentation property and implement for TPixel types - #1420 via @JimBobSquarePants, @antonfirsov
- New Image.WrapMemory(void*) overloads - #1419 via @Sergio0694, @JimBobSquarePants
- Add PremultiplyAlpha to ResizeOptions - #1504 via @ptasev
- Change size guards for WrapMemory to allow Memory/IMemoryOwner blocks to be larger than the image size - #1526 via @jeffska, @JimBobSquarePants
- New overloads for binary threshold operations. The new argument Color… - #1555 via @Franz1960, @JimBobSquarePants
- Introduce Numerics class and Refactor Clamp Utils - #1436 via @JimBobSquarePants
- Pixel remapping/Swizzling - #1388 via @Evangelink, @JimBobSquarePants
Performance
- PixelOperations.From speedup - #1435 via @Sergio0694
- Implement PackFromRgbPlanes for Rgba32 and Rgb24 - #1462 via @antonfirsov, @JimBobSquarePants
- Optimize Convolution - #1465 via @JimBobSquarePants
- Optimize bokeh blur convolution - #1475 via @Sergio0694, @JimBobSquarePants
- 1D convolution optimization and general codegen tweaks - #1477 via @Sergio0694
- Much Faster sRGB Companding - #1481 via @JimBobSquarePants
- Speed improvements to resize kernel (w/ SIMD) - #1513 via @Sergio0694
- Use bulk conversion in Write8BitColor - #1428 via @brianpopow
- Vectorize Scale16X16To8X8 - #1517 via @tkp1n
- JpegEncoder - Optimize Some Low Hanging Fruit - #1533 via @JimBobSquarePants
- Vectorize Jpeg Encoder Color Conversion - #1508 via @tkp1n
- Fix vectorized 4:2:0 subsampling - #1551 via @tkp1n
- Reduce code duplication due to reified generics - #1444 via @Sergio0694
- Add check for Avx2 in ResizeKernel - #1548 via @brianpopow
Bug Fixes
- Sanitize Gif descriptor bounds. - #1532 via @JimBobSquarePants
- Use GetPixelRowSpan to access pixel data in Histogram equalization - #1431 via @brianpopow
- Ensure Span length of source and destination are equal during pixel conversion - #1443 via @brianpopow
- Fix for Issue #1505 - #1506 via @brianpopow, @JimBobSquarePants
- Filter processor should use scaled vectors. - #1463 via @maxvoxel8
Other
- Fix link + other docs tweaks. - #1478 via @JimBobSquarePants
- Small README.md edit - #1535 via @kendaleiv
- Update shared infra structure to treat image file types by git lfs - #1558 via @brianpopow
- Enable resize tests on MacOs - #1434 via @JimBobSquarePants
- Add xunit trait attributes to tests - #1455 via @brianpopow
- Benchmark Code Quality Cleanup - #1479 via @JimBobSquarePants
- Enable support to use libgdiplus library on macOS (splitted) - #1424 via @AlexNDRmac
- Add cache for Nuget packages - #1439 via @AlexNDRmac, @antonfirsov
- Add net5.0 targetframework - #1519 via @stefannikolei
- Better JpegEncoder profiling & benchmarks - #1534 via @antonfirsov
- Fix Code Coverage - #1554 via @JimBobSquarePants
- Update to use new props/targets plus cleanup. - #1451 via @JimBobSquarePants
- Add action to save Output Images for failed tests - #1452 via @AlexNDRmac
- Use correct shared ruleset path. - #1464 via @JimBobSquarePants
v1.0.2
Advisories and Breaking Changes
- None
Release Notes
Bug Fixes
- Use interest for target bounds. Fixes #1342 - #1343 via @JimBobSquarePants
- Fixed typo in AdaptiveThreshold - #1362 via @rold2007
- Add reference output for #1362 - #1363 via @brianpopow
- Fixed setting the file size when the BMP encoder has a color palette - #1384 via @dlemstra, @JimBobSquarePants
- Fix ARM Build for UWP Release - #1391 via @JimBobSquarePants
Area:Api
- Auto repair Png options to use Bit8. - #1395 via @JimBobSquarePants
- Add missing SaveAsync method - #1334 via @JimBobSquarePants
- Image.WrapMemory APIs wrapping Memory - #1314 via @Sergio0694, @JimBobSquarePants
Area:Performance
- Add Avx backed Block8x8F Transpose method - #1374 via @JimBobSquarePants
- Optimize Block8x8F low hanging fruit and fix naming - #1390 via @JimBobSquarePants
- Add SimdUtils.HwIntrinsics - #1398 via @JimBobSquarePants
- Add Avx2 Vector4 Span Premultiplication and Reverse - #1399 via @JimBobSquarePants
- Add AVX2 Vector4Octet.Pack implementation - #1402 via @JimBobSquarePants
- 3 <==> 4 Channel Shuffling with Hardware Intrinsics - #1409 via @JimBobSquarePants
- Vectorize (AVX2) JPEG Color Converter - #1411 via @tkp1n, @antonfirsov, @JimBobSquarePants
- Bokeh blur constructor tweaks (input validation, tiny speedup) - #1332 via @Sergio0694
- Improved codegen in ImageSharp.Guard - #1333 via @Sergio0694, @JimBobSquarePants
- Add 4 Channel Shuffle Intrinsics - #1404 via @JimBobSquarePants
- Optimize TryGetSinglePixelSpan - #1407 via @JimBobSquarePants
- Bump ChunkedMemoryStream buffer length - #1328 via @JimBobSquarePants
Area:Build
- Fix compatibility with NET 5 SDK InternalsVisibleTo - #1337 via @JimBobSquarePants
- Use Ubuntu for Code Coverage. - #1377 via @JimBobSquarePants
- Update Dependencies - #1378 via @JimBobSquarePants
- Upgraded Magick.NET. - #1383 via @dlemstra, @JimBobSquarePants
- Fix JpegDecoderTests.Decode_IsCancellable - #1415 via @antonfirsov
- Advanced Feature Testing - #1385 via @JimBobSquarePants
v1.0.1
Advisories and Breaking Changes
- None
Release Notes
Bug
-
Simplify jpeg encoder and fix for Windows ARM - #1304 via @JimBobSquarePants
-
Fix non-seekable stream reading - #1316 via @JimBobSquarePants
Other
- Add GitHub Sponsors - #1311 via @JimBobSquarePants
v1.0.0
Advisories and Breaking Changes
Area:Api
- Better Edge Detection API - #1299 via @JimBobSquarePants
- Cancellable codec API, and overloads for loading/saving - #1296 via @antonfirsov, @JimBobSquarePants
Release Notes
Area:Api
- LoadAsync methods accepting string path. - #1257 via @pekspro, @JimBobSquarePants
- Async version of DiscoverDecoder - #1260 via @pekspro, @JimBobSquarePants
- Save as extensions - #1256 via @pekspro, @antonfirsov, @JimBobSquarePants
Area:Formats
- Buffered Decoding. - #1269 via @JimBobSquarePants
Area:Performance
- Make stream buffer size configurable. - #1286 via @JimBobSquarePants
Bug
- Change position guard from MustBeLessThanTo to MustBeLessThanOrEqualTo - #1291 via @brianpopow
Area:Build
- Update all dependency references. - #1262 via @JimBobSquarePants
Area:Build
- Better Builds - #1245 via @JimBobSquarePants
Documentation
- Add submodule info to CONTRIBUTING.md - #1277 via @wilka, @JimBobSquarePants
1.0.0-rc.3
Area:Api
- Async APIs / Fake Async Codecs - #1196 via @tocsoft, @JimBobSquarePants
Bug
- Only throw for multi SOF when fully decoding. - #1226 via @JimBobSquarePants
- Update Adler32 to correctly filter intrinsics. - #1229 via @JimBobSquarePants
- Use ConcurrentDictionary for options properties. - #1234 via @JimBobSquarePants
Area:Build
- Bump Gitversion - #1232 via @JimBobSquarePants
Other
- Update README.md - #1216 via @shaggygi
- Use MemoryAllocator in FixedCapacityPooledMemoryStream - #1223 via @antonfirsov
- Tests for FixedCapacityPooledMemoryStream - #1225 via @antonfirsov
- Added Third Party Notices document - #1236 via @Turnerj, @JimBobSquarePants
1.0.0-rc.2
Release Notes
Reintroduces the Apache 2.0 License as the open source license.
Area:Performance
- Add Hardware Accelerated Checksums - #1201 via @JimBobSquarePants
Bug
- Return input checksum value on empty buffer - #1203 via @JimBobSquarePants
- Swap buffers when encoding PNG with Filtered Adam7 Palette mode - #1212 via @JimBobSquarePants
- Change Scanlines and SamplesPerLine from short to int - #1197 via @brianpopow
- Ensure min dimension of 1px following rounding. - #1198 via @JimBobSquarePants
Enhancement
- Added: ability to skip unneeded chunks for optimization mode - #1012 via @equinox2k, @brianpopow, @JimBobSquarePants
Area:Build
- Use official Codecov action - #1214 via @JimBobSquarePants
Formats:Tga
- Additionally checks in DetectFormat for TGA files - #1210 via @brianpopow
Other
- Minor readme typo. "commmon" -> "common" - #1200 via @Jaben, @JimBobSquarePants
- Add Discussions Links - #1213 via @JimBobSquarePants
1.0.0-rc.1
Release Notes
Milestone: 1.0.0-rc1
Area:Api
- ExifTagDescriptionAttribute doesnt need fields - #978 via @SimonCropp, @JimBobSquarePants
- Refactor IDisposable pattern - #1009 via @JimBobSquarePants
- Expose visitor through advanced namespace. - #1010 via @JimBobSquarePants
- Make processors public, refactor cloning. - #1011 via @JimBobSquarePants
- Expose pixelblenders. #967 - #1028 via @JimBobSquarePants
- Expose Buffer2D and ParallelHelper internals - #1035 via @antonfirsov, @JimBobSquarePants
- Expose final internals to allow decoupling Drawing. - #1046 via @JimBobSquarePants
- Allow returning the image format with the info. - #1059 via @JimBobSquarePants
- Add La16 and La32 IPixel formats. - #1062 via @JimBobSquarePants
- Public Vector4 to/from conversions - #1050 via @Sergio0694, @JimBobSquarePants
- Allow passing custom Configuration instances to processors - #1070 via @JimBobSquarePants
- Simplify and cleanup build constants - #1075 via @JimBobSquarePants
- Merge SixLabors.Core sources into ImageSharp - #1087 via @antonfirsov, @DaniaalNadir, @dlemstra, @iamcarbon, @JimBobSquarePants, @Mertsch, @synercoder, @tocsoft
- Expose Pixel Operations and Configuration - #1095 via @JimBobSquarePants
- Rename Pixel Shader Extensions and Delegates - #1096 via @JimBobSquarePants
- Add new Color parsing methods. - #1104 via @JimBobSquarePants
- Single row value delegates for parallel iterator - #1108 via @Sergio0694
- Remove Closure Allocations when Iterating Rows in Parallel - #1107 via @JimBobSquarePants, @Sergio0694
- Bokeh blur cache optimization - #1113 via @Sergio0694
- Fix quantization and dithering. - #1114 via @JimBobSquarePants, @brianpopow
- Implement discontiguous buffer handling - #1109 via @antonfirsov, @brianpopow, @JimBobSquarePants
- Generic Octet struct - #1131 via @Sergio0694
- Refactoring and tweaks (2) - #1122 via @Sergio0694, @JimBobSquarePants
- Single row value delegate option - #1132 via @Sergio0694
- Text segment ReadOnlySpan initialization - #1133 via @Sergio0694, @JimBobSquarePants
- Dither and Quantize API and Performance Improvements. - #1138 via @JimBobSquarePants, @antonfirsov
- Add overloads. Fix #1144 - #1146 via @JimBobSquarePants
- Add image extension method for save as tga - #1155 via @brianpopow
- Clean Up Namespaces and Visibility - #1161 via @JimBobSquarePants
- Improve accessability of Span methods. - #1172 via @JimBobSquarePants
- Update ToBase64String - #1175 via @JimBobSquarePants
- Allocation-free IMemoryGroup enumeration - #1173 via @Sergio0694, @JimBobSquarePants
- Add exception type and update xml docs. - #1179 via @JimBobSquarePants
- Add Property bag to Configuration and Image Processing Context - #1176 via @tocsoft, @JimBobSquarePants
- Change ImageFormatException to InvalidImageContentException - #1190 via @brianpopow
- Introduce PngCompressionLevel - #1192 via @JimBobSquarePants
- BufferRegion => Buffer2DRegion - #1194 via @JimBobSquarePants
Area:Bug
- Fix RGB to HSL conversion - #1001 via @JimBobSquarePants
- Fix #999 and add tests - #1003 via @JimBobSquarePants
- Fix #1004 - #1005 via @JimBobSquarePants, @antonfirsov
- Prevent PathGradientBrush from throwing an error with corner cases - #1007 via @mysticfall
- Fix horizontally out-of-bounds error when drawing text - #1008 via @Turnerj
- Change histogram clipLimit to be an absolute value - #1017 via @brianpopow, @JimBobSquarePants
- Png decoder fix for Issue #1014 - #1020 via @brianpopow
- Update the hex value for DarkSeaGreen color - #1021 via @zappyzhao, @JimBobSquarePants
- Fix reading of pngs with corrupt IEND chunks. - #1055 via @JimBobSquarePants
- Fix #1006 Resize from large source to small thumbnail produces deformed top pixel rows - #1060 via @JimBobSquarePants
- Js/fix namespace - #1066 via @JimBobSquarePants
- EXIF - Post review fixes - #1069 via @JimBobSquarePants
- Enumerate once on clone. Fix #1073 - #1074 via @JimBobSquarePants
- Remove invalid Subsampling checks. - #1078 via @JimBobSquarePants
- Use per-edge buffer + minor optimizations. - #1079 via @JimBobSquarePants
- Update Exif LensInfo - #1093 via @JimBobSquarePants
- Default Gif RepeatCount to 1 - #1100 via @JimBobSquarePants
- Break when minY >= bottom - [#1106](https://github...
1.0.0-beta7
- #816 - Update dependencies + fix stylecop
enhancement
contributed by JimBobSquarePants - #819 - Respecting fileHeader Offset, skipping bytes if necessary
bug
formats:bmp
contributed by brianpopow - #820 - Track input stream position on load.
bug
formats:jpeg
contributed by JimBobSquarePants - #830 - Fix Decoding 8-Bit interlaced grayscale png's with alpha channel contributed by brianpopow
- #831 - Fix Decoding interlaced grayscale png's contributed by brianpopow
- #832 - Add support for Decoding BI_ALPHABITFIELDS contributed by brianpopow
- #833 - Allow Build with Visual Studio For Mac
build
contributed by JimBobSquarePants - #834 - Remove hardcoded subsampling.
bug
formats:jpeg
contributed by JimBobSquarePants - #835 - GDI+ stability fixes for the benchmark and tests contributed by Lakritzator
- #836 - Jpeg Fuzz Fixes
bug
formats:jpeg
contributed by JimBobSquarePants - #841 - Lazily derive the huffman tables. Fix #839
bug
formats:jpeg
contributed by JimBobSquarePants - #842 - Bokeh blur implementation contributed by Sergio0694
- #848 - Implement IEquatable<Block8x8F> and check when summing.
bug
formats:jpeg
contributed by JimBobSquarePants - #851 - Png Decoder Bounds check. Fix #849
bug
formats:png
contributed by JimBobSquarePants - #853 - #852 Adding instructions to add submodules when cloning the repository
documentation
contributed by bulldetektor - #855 - Updating some readonly static data in JpegEncoderCore to take advantage of compiler functionality.
formats:jpeg
performance
contributed by tannergooding - #863 - Remove Enum Comparison Boxing
performance
contributed by JimBobSquarePants - #864 - Fix incorrect gradient color-stop calculation
bug
drawing
contributed by Poyo-SSB - #865 - Change existing gradient brushes to accept PointF
drawing
enhancement
contributed by Poyo-SSB - #869 - Introduce extended pixel conversion
api
enhancement
performance
contributed by antonfirsov - #870 - Nits
codequality
contributed by iamcarbon - #874 - Use more accuracy when calculating variance. Fix #866
bug
quantizers
contributed by JimBobSquarePants - #877 - Now throws a better excpetion DrawImage source does not overlap target contributed by atruskie
- #879 - Nits - Metadata
documentation
metadata:exif
metadata:icc
metadata:iptc
metadata:xmp
contributed by iamcarbon - #880 - Nits - Colorspaces
bug
colorspaces
performance
contributed by iamcarbon - #883 - ImageBrush shouldn't Dispose of the image it is using.
bug
drawing
contributed by BorisTheBrave - #884 - Nits - Benchmarks
codequality
contributed by iamcarbon - #885 - Handle incorrect colorspace metadata.
bug
formats:jpeg
contributed by JimBobSquarePants - #887 - Cleanup General Convolution
api
bug
performance
contributed by JimBobSquarePants - #888 - Limit ResizeProcessor memory consumption
enhancement
memory
performance
contributed by antonfirsov - #889 - Bitmap encoder writes V3 header as default
bug
formats:bmp
contributed by brianpopow - #891 - Fix travis builds
build
contributed by antonfirsov - #893 - Pass correct output size source image is smaller than the Target in ResizeMode.Min [
bug
](https://api.github.com/repos/...