Skip to content

Latest commit

 

History

History
2075 lines (1407 loc) · 74.8 KB

changelog.md

File metadata and controls

2075 lines (1407 loc) · 74.8 KB

Changelog

v0.33 - gauge

Requires libvips v8.15.5-rc1

v0.33.6 - TBD

  • Upgrade to libvips v8.15.5-rc1 for upstream bug fixes.

  • TypeScript: Ensure channel counts use the correct range. #4197 @DavidVaness

  • Improve support for ppc64le architecture. #4203 @sumitd2

  • Add pdfBackground constructor property. #4207 @calebmer

v0.33.5 - 16th August 2024

  • Upgrade to libvips v8.15.3 for upstream bug fixes.

  • Add pageHeight and pages to response of multi-page output. #3411

  • Ensure option to force use of a globally-installed libvips works correctly. #4111 @project0

  • Minimise use of engines property to improve yarn v1 support. #4130

  • Ensure sharp.format.heif includes only AVIF when using prebuilt binaries. #4132

  • Add support to recomb operation for 4x4 matrices. #4147 @ton11797

  • Expose PNG text chunks as comments metadata. #4157 @nkeynes

  • Expose optional precision and minAmplitude parameters of blur operation. #4168 #4172 @marcosc90

  • Ensure keepIccProfile avoids colour transformation where possible. #4186

  • TypeScript: chromaSubsampling metadata is optional. #4191 @DavidVaness

v0.33.4 - 16th May 2024

  • Remove experimental status from pipelineColourspace.

  • Reduce default concurrency when musl thread over-subscription detected.

  • TypeScript: add missing definitions for OverlayOptions. #4048 @ike-gg

  • Install: add advanced option to force use of a globally-installed libvips. #4060

  • Expose bilinear resizing kernel (and interpolator). #4061

  • Ensure extend operation stays sequential for multi-page TIFF (regression in 0.32.0). #4069

  • Tighten validation of constructor text integer properties. #4071

  • Simplify internal StaySequential logic. #4074 @kleisauke

  • Ensure negate operation occurs after profile conversion. #4096 @adriaanmeuris

v0.33.3 - 23rd March 2024

  • Upgrade to libvips v8.15.2 for upstream bug fixes.

  • Ensure keepIccProfile retains P3 and CMYK input profiles. #3906 #4008

  • Ensure text.wrap property can accept word-char as value. #4028 @yolopunk

  • Ensure clone takes a deep copy of existing options. #4029

  • Add bitdepth option to heif output (prebuilt binaries support 8-bit only). #4036 @mertalev

v0.33.2 - 12th January 2024

  • Upgrade to libvips v8.15.1 for upstream bug fixes.

  • TypeScript: add definition for keepMetadata. #3914 @abhi0498

  • Ensure extend operation stays sequential when copying (regression in 0.32.0). #3928

  • Improve error handling for unsupported multi-page rotation. #3940

v0.33.1 - 17th December 2023

  • Add support for Yarn Plug'n'Play filesystem layout. #3888

  • Emit warning when attempting to use invalid ICC profiles. #3895

  • Ensure VIPS_NOVECTOR environment variable is respected. #3897 @icetee

v0.33.0 - 29th November 2023

  • Drop support for Node.js 14 and 16, now requires Node.js ^18.17.0 or >= 20.3.0

  • Prebuilt binaries distributed via npm registry and installed via package manager.

  • Building from source requires dependency on node-addon-api.

  • Remove sharp.vendor.

  • Partially deprecate withMetadata(), use withExif() and withIccProfile().

  • Add experimental support for WebAssembly-based runtimes. @RReverser

  • Options for trim operation must be an Object, add new lineArt option. #2363

  • Improve luminance of tint operation with weighting function. #3338 @jcupitt

  • Ensure all Error objects contain a stack property. #3653

  • Make compression option of heif mandatory to help reduce HEIF vs HEIC confusion. #3740

  • Ensure correct interpretation of 16-bit raw input. #3808

  • Add support for miniswhite when using TIFF output. #3812 @dnsbty

  • TypeScript: add missing definition for withMetadata boolean. #3823 @uhthomas

  • Add more fine-grained control over output metadata. #3824

  • Ensure multi-page extract remains sequential. #3837

v0.32 - flow

Requires libvips v8.14.5

v0.32.6 - 18th September 2023

  • Upgrade to libvips v8.14.5 for upstream bug fixes.

  • Ensure composite tile images are fully decoded (regression in 0.32.0). #3767

  • Ensure withMetadata can add ICC profiles to RGB16 output. #3773

  • Ensure withMetadata does not reduce 16-bit images to 8-bit (regression in 0.32.5). #3773

  • TypeScript: Add definitions for block and unblock. #3799 @ldrick

v0.32.5 - 15th August 2023

  • Upgrade to libvips v8.14.4 for upstream bug fixes.

  • TypeScript: Add missing WebpPresetEnum to definitions. #3748 @pilotso11

  • Ensure compilation using musl v1.2.4. #3755 @kleisauke

  • Ensure resize with a fit of inside respects 90/270 degree rotation. #3756

  • TypeScript: Ensure minSize property of WebpOptions is boolean. #3758 @sho-xizz

  • Ensure withMetadata adds default sRGB profile. #3761

v0.32.4 - 21st July 2023

  • Upgrade to libvips v8.14.3 for upstream bug fixes.

  • Expose ability to (un)block low-level libvips operations by name.

  • Prebuilt binaries: restore support for tile-based output. #3581

v0.32.3 - 14th July 2023

  • Expose preset option for WebP output. #3639

  • Ensure decoding remains sequential for all operations (regression in 0.32.2). #3725

v0.32.2 - 11th July 2023

  • Limit HEIF output dimensions to 16384x16384, matches libvips.

  • Ensure exceptions are not thrown when terminating. #3569

  • Ensure the same access method is used for all inputs (regression in 0.32.0). #3669

  • Improve detection of jp2 filename extensions. #3674 @bianjunjie1981

  • Guard use of smartcrop premultiplied option to prevent warning (regression in 0.32.1). #3710

  • Prevent over-compute in affine-based rotate before resize. #3722

  • Allow sequential read for EXIF-based auto-orientation. #3725

v0.32.1 - 27th April 2023

  • Add experimental unflatten operation. #3461 @antonmarsden

  • Ensure use of flip operation forces random access read (regression in 0.32.0). #3600

  • Ensure linear operation works with 16-bit input (regression in 0.31.3). #3605

  • Install: ensure proxy URLs are logged correctly. #3615 @TomWis97

  • Ensure profile-less CMYK to CMYK roundtrip skips colourspace conversion. #3620

  • Add support for modulate operation when using non-sRGB pipeline colourspace. #3620

  • Ensure trim operation works with CMYK images (regression in 0.31.0). #3636

  • Install: coerce libc version to semver. #3641

v0.32.0 - 24th March 2023

  • Default to using sequential rather than random access read where possible.

  • Replace GIF output optimise / optimize option with reuse.

  • Add progressive option to GIF output for interlacing.

  • Add wrap option to text image creation.

  • Add formatMagick property to metadata of images loaded via *magick.

  • Prefer integer (un)premultiply for faster resizing of RGBA images.

  • Add ignoreIcc input option to ignore embedded ICC profile.

  • Allow use of GPS (IFD3) EXIF metadata. #2767

  • TypeScript definitions are now maintained and published directly, deprecating the @types/sharp package. #3369

  • Prebuilt binaries: ensure macOS 10.13+ support, as documented. #3438

  • Prebuilt binaries: prevent use of glib slice allocator, improves QEMU support. #3448

  • Add focus point coordinates to output when using attention based crop. #3470 @ejoebstl

  • Expose sharp version as sharp.versions.sharp. #3471

  • Respect fastShrinkOnLoad resize option for WebP input. #3516

  • Reduce sharpen sigma maximum from 10000 to 10. #3521

  • Add support for ArrayBuffer input. #3548 @kapouer

  • Add support to extend operation for extendWith to allow copy/mirror/repeat. #3556 @janaz

  • Ensure all async JS callbacks are wrapped to help avoid possible race condition. #3569

  • Prebuilt binaries: support for tile-based output temporarily removed due to licensing issue. #3581

  • Add support to normalise for lower and upper percentiles. #3583 @LachlanNewman

v0.31 - eagle

Requires libvips v8.13.3

v0.31.3 - 21st December 2022

  • Add experimental support for JPEG-XL images. Requires libvips compiled with libjxl. #2731

  • Add runtime detection of V8 memory cage, ensures compatibility with Electron 21 onwards. #3384

  • Expose interFrameMaxError and interPaletteMaxError GIF optimisation properties. #3401

  • Allow installation on Linux with glibc patch versions e.g. Fedora 38. #3423

  • Expand range of existing sharpen parameters to match libvips. #3427

  • Prevent possible race condition awaiting metadata of Stream-based input. #3451

  • Improve extractChannel support for 16-bit output colourspaces. #3453

  • Ignore sequentialRead option when calculating image statistics. #3462

  • Small performance improvement for operations that introduce a non-opaque background. #3465

  • Ensure integral output of linear operation. #3468

v0.31.2 - 4th November 2022

  • Upgrade to libvips v8.13.3 for upstream bug fixes.

  • Ensure manual flip, rotate, resize operation ordering (regression in 0.31.1) #3391

  • Ensure auto-rotation works without resize (regression in 0.31.1) #3422

v0.31.1 - 29th September 2022

  • Upgrade to libvips v8.13.2 for upstream bug fixes.

  • Ensure close event occurs after end event for Stream-based output. #3313

  • Ensure limitInputPixels constructor option uses uint64. #3349 @marcosc90

  • Ensure auto-rotation works with shrink-on-load and extract (regression in 0.31.0). #3352

  • Ensure AVIF output is always 8-bit. #3358

  • Ensure greyscale images can be trimmed (regression in 0.31.0). #3386

v0.31.0 - 5th September 2022

  • Drop support for Node.js 12, now requires Node.js >= 14.15.0.

  • GIF output now re-uses input palette if possible. Use reoptimise option to generate a new palette.

  • Add WebP minSize and mixed options for greater control over animation frames.

  • Remove previously-deprecated WebP reductionEffort and HEIF speed options. Use effort to control these.

  • The flip and flop operations will now occur before the rotate operation.

  • Improve normalise operation with use of histogram. #200

  • Use combined bounding box of alpha and non-alpha channels for trim operation. #2166

  • Add Buffer and Stream support to tile-based output. #2238

  • Add input fileSuffix and output alias to format information. #2642

  • Re-introduce support for greyscale ICC profiles (temporarily removed in 0.30.2). #3114

  • Add support for WebP and PackBits compression options with TIFF output. #3198

  • Ensure OpenSlide and FITS input works with custom libvips. #3226

  • Ensure trim operation is a no-op when it would reduce an image to nothing. #3223

  • Expose vips_text to create an image containing rendered text. #3252 @brahima

  • Ensure only properties owned by the withMetadata EXIF Object are parsed. #3292

  • Expand linear operation to allow use of per-channel arrays. #3303 @antonmarsden

  • Ensure the order of rotate, resize and extend operations is respected where possible. Emit warnings when previous calls in the same pipeline will be ignored. #3319

  • Ensure PNG bitdepth can be set for non-palette output. #3322

  • Add trim option to provide a specific background colour. #3332 @mart-jansink

  • Ensure resized image is unpremultiplied before composite. #3334

v0.30 - dresser

Requires libvips v8.12.2

v0.30.7 - 22nd June 2022

v0.30.6 - 30th May 2022

  • Allow values for limitInputPixels larger than 32-bit. #3238

  • Ensure brew-installed vips can be detected (regression in 0.30.5). #3239

v0.30.5 - 23rd May 2022

  • Install: pass PKG_CONFIG_PATH via env rather than substitution. @dwisiswant0

  • Add support for --libc flag to improve cross-platform installation. #3160 @joonamo

  • Allow installation of prebuilt libvips binaries from filesystem. #3196 @ankurparihar

  • Fix rotate-then-extract for EXIF orientation 2. #3218 @jakob0fischl

v0.30.4 - 18th April 2022

  • Increase control over sensitivity to invalid images via failOn, deprecate failOnError (equivalent to failOn: 'warning').

  • Ensure create input image has correct bit depth and colour space. #3139

  • Add support for TypedArray input with byteOffset and length. #3146 @codepage949

  • Improve error message when attempting to render SVG input greater than 32767x32767. #3167

  • Add missing file name to 'Input file is missing' error message. #3178 @Brodan

v0.30.3 - 14th March 2022

  • Allow sharpen options to be provided more consistently as an Object. #2561

  • Expose x1, y2 and y3 parameters of sharpen operation. #2935

  • Prevent double unpremultiply with some composite blend modes (regression in 0.30.2). #3118

v0.30.2 - 2nd March 2022

  • Improve performance and accuracy when compositing multiple images. #2286

  • Expand pkgconfig search path for wider BSD support. #3106

  • Ensure Windows C++ runtime is linked statically (regression in 0.30.0). #3110 @kleisauke

  • Temporarily ignore greyscale ICC profiles to workaround lcms bug. #3112

v0.30.1 - 9th February 2022

  • Allow use of toBuffer and toFile on the same instance. #3044

  • Skip shrink-on-load for known libjpeg rounding errors. #3066 @kleisauke

  • Ensure withoutReduction does not interfere with contain/crop/embed. #3081 @kleisauke

  • Ensure affine interpolator is correctly finalised. #3083 @kleisauke

v0.30.0 - 1st February 2022

  • Add support for GIF output to prebuilt binaries.

  • Reduce minimum Linux ARM64v8 glibc requirement to 2.17.

  • Verify prebuilt binaries with a Subresource Integrity check.

  • Standardise WebP effort option name, deprecate reductionEffort.

  • Standardise HEIF effort option name, deprecate speed.

  • Add support for IIIF v3 tile-based output.

  • Expose control over CPU effort for palette-based PNG output. #2541

  • Improve animated (multi-page) image resize and extract. #2789 @kleisauke

  • Expose platform and architecture of vendored binaries as sharp.vendor. #2928

  • Ensure 16-bit PNG output uses correct bitdepth. #2958 @gforge

  • Properly emit close events for duplex streams. #2976 @driannaude

  • Expose unlimited option for SVG and PNG input, switches off safety features. #2984

  • Add withoutReduction option to resize operation. #3006 @christopherbradleybanks

  • Add resolutionUnit as tiff option and expose in metadata. #3023 @ompal-sisodiya

  • Ensure rotate-then-extract works with EXIF mirroring. #3024

v0.29 - circle

Requires libvips v8.11.3

v0.29.3 - 14th November 2021

  • Ensure correct dimensions when containing image resized to 1px. #2951

  • Impute TIFF xres/yres from density provided to withMetadata. #2952 @mbklein

v0.29.2 - 21st October 2021

  • Add timeout function to limit processing time.

  • Ensure sharp.versions is populated from vendored libvips.

  • Remove animation properties from single page images. #2890

  • Allow use of 'tif' to select TIFF output. #2893 @erf

  • Improve error message on Windows for version conflict. #2918 @dkrnl

  • Throw error rather than exit when invalid binaries detected. #2931

v0.29.1 - 7th September 2021

  • Add lightness option to modulate operation. #2846

  • Ensure correct PNG bitdepth is set based on number of colours. #2855

  • Ensure background is always premultiplied when compositing. #2858

  • Ensure images with P3 profiles retain full gamut. #2862

  • Add support for libvips compiled with OpenJPEG. #2868

  • Remove unsupported animation properties from AVIF output. #2870

  • Resolve paths before comparing input/output filenames. #2878 @rexxars

  • Allow use of speed 9 (fastest) for HEIF encoding. #2879 @rexxars

v0.29.0 - 17th August 2021

  • Drop support for Node.js 10, now requires Node.js >= 12.13.0.

  • Add background property to PNG and GIF image metadata.

  • Add compression property to HEIF image metadata. #2504

  • AVIF encoding now defaults to 4:4:4 chroma subsampling. #2562

  • Allow multiple platform-arch binaries in same node_modules installation tree. #2575

  • Default to single-channel b-w space when extractChannel is used. #2658

  • Allow installation directory to contain spaces (regression in v0.26.0). #2777

  • Add pipelineColourspace operator to set the processing space. #2704 @Daiz

  • Allow bit depth to be set when using raw input and output. #2762 @mart-jansink

  • Allow negate to act only on non-alpha channels. #2808 @rexxars

v0.28 - bijou

Requires libvips v8.10.6

v0.28.3 - 24th May 2021

  • Ensure presence of libvips, vendored or global, before invoking node-gyp.

  • Skip shrink-on-load for multi-page WebP. #2714

  • Add contrast limiting adaptive histogram equalization (CLAHE) operator. #2726 @baparham

v0.28.2 - 10th May 2021

  • Allow withMetadata to set density. #967

  • Skip shrink-on-load where one dimension <4px. #2653

  • Allow escaped proxy credentials. #2664 @msalettes

  • Add premultiplied flag for raw pixel data input. #2685 @mnutt

  • Detect empty input and throw a helpful error. #2687 @JakobJingleheimer

  • Add install-time flag to skip version compatibility checks. #2692 @xemle

v0.28.1 - 5th April 2021

  • Ensure all installation errors are logged with a more obvious prefix.

  • Allow withMetadata to set and update EXIF metadata. #650

  • Add support for OME-TIFF Sub Image File Directories (subIFD). #2557

  • Allow ensureAlpha to set the alpha transparency level. #2634

v0.28.0 - 29th March 2021

  • Prebuilt binaries now include mozjpeg and libimagequant (BSD 2-Clause).

  • Prebuilt binaries limit AVIF support to the most common 8-bit depth.

  • Add mozjpeg option to jpeg method, sets mozjpeg defaults.

  • Reduce the default PNG compressionLevel to the more commonly used 6.

  • Reduce concurrency on glibc-based Linux when using the default memory allocator to help prevent fragmentation.

  • Default missing edge properties of extend operation to zero. #2578

  • Ensure composite does not clip top and left offsets. #2594 @SHG42

  • Improve error handling of network failure at install time. #2608 @abradley

  • Ensure @id attribute can be set for IIIF tile-based output. #2612 @edsilv

  • Ensure composite replicates the correct number of tiles for centred gravities. #2626

v0.27 - avif

Requires libvips v8.10.5

v0.27.2 - 22nd February 2021

  • macOS: Prevent use of globally-installed ARM64 libvips with Rosetta x64 emulation. #2460

  • Linux (musl): Prevent use of prebuilt linuxmusl-x64 binaries with musl >= 1.2.0. #2570

  • Improve 16-bit grey+alpha support by using libvips' has_alpha detection. #2569

  • Allow the use of non lower case extensions with toFormat. #2581 @florian-busch

  • Allow use of recomb operation with single channel input. #2584

v0.27.1 - 27th January 2021

  • Ensure TIFF is cast when using float predictor. #2502 @randyridge

  • Add support for Uint8Array and Uint8ClampedArray input. #2511 @leon

  • Revert: ensure all platforms use fontconfig for font rendering. #2515

  • Expose libvips gaussnoise operation to allow creation of Gaussian noise. #2527 @alza54

v0.27.0 - 22nd December 2020

  • Add support for AVIF to prebuilt binaries.

  • Remove experimental status from heif output, defaults are now AVIF-centric.

  • Allow negative top/left offsets for composite operation. #2391 @CurosMJ

  • Ensure all platforms use fontconfig for font rendering. #2399

v0.26 - zoom

Requires libvips v8.10.0

v0.26.3 - 16th November 2020

v0.26.2 - 14th October 2020

  • Add support for EXR input. Requires libvips compiled with OpenEXR. #698

  • Ensure support for yarn v2. #2379 @jalovatt

  • Add centre/center option to tile-based output. #2397 @beig

v0.26.1 - 20th September 2020

  • Ensure correct pageHeight when verifying multi-page image dimensions. #2343 @derom

  • Allow input density range up to 100000 DPI. #2348 @stefanprobst

  • Ensure animation-related properties can be set for Stream-based input. #2369 @AcrylicShrimp

  • Ensure stats can be calculated for 1x1 input. #2372

  • Ensure animated GIF output is optimised. #2376

v0.26.0 - 25th August 2020

  • Prebuilt libvips binaries are now statically-linked and Brotli-compressed, requiring Node.js 10.16.0+.

  • TIFF output squash is replaced by bitdepth to reduce to 1, 2 or 4 bit.

  • JPEG output quality >= 90 no longer automatically sets chromaSubsampling to 4:4:4.

  • Add most dominant colour to image stats. #640

  • Add support for animated GIF (requires *magick) and WebP output. #2012 @deftomat

  • Add support for libvips ImageMagick v7 loaders. #2258 @vouillon

  • Allow multi-page input via *magick. #2259 @vouillon

  • Add support to withMetadata for custom ICC profile. #2271 @roborourke

  • Ensure prebuilt binaries for ARM default to v7 when using Electron. #2292 @diegodev3

v0.25 - yield

Requires libvips v8.9.1

v0.25.4 - 12th June 2020

  • Allow libvips binary location override where version is appended. #2217 @malice00

  • Enable PNG palette when setting quality, colours, colors or dither. #2226 @romaleev

  • Add level constructor option to use a specific level of a multi-level image. Expose levels metadata for multi-level images. #2222

  • Add support for named alpha channel to extractChannel operation. #2138

  • Add experimental sharpness calculation to stats() response. #2251

  • Emit warning event for non-critical processing problems. #2032

v0.25.3 - 17th May 2020

  • Ensure libvips is initialised only once, improves worker thread safety. #2143

  • Ensure npm platform flag is respected when copying DLLs. #2188 @dimadeveatii

  • Allow SVG input with large inline images to be parsed. #2195

v0.25.2 - 20th March 2020

  • Provide prebuilt binaries for Linux ARM64v8.

  • Add IIIF layout support to tile-based output. #2098 @edsilv

  • Ensure input options are consistently and correctly detected. #2118

  • Ensure N-API prebuilt binaries work on RHEL7 and its derivatives. #2119

  • Ensure AsyncWorker options are persisted. #2130

v0.25.1 - 7th March 2020

  • Ensure prebuilt binaries are fetched based on N-API version. #2117

v0.25.0 - 7th March 2020

  • Remove limitInputPixels and sequentialRead previously deprecated in v0.24.0.

  • Migrate internals to N-API. #1282

  • Add support for 32-bit Windows. #2088

  • Ensure correct ordering of rotate-then-trim operations. #2087

  • Ensure composite accepts limitInputPixels and sequentialRead input options. #2099

v0.24 - "wit"

Requires libvips v8.9.0.

v0.24.1 - 15th February 2020

  • Prevent use of sequentialRead for EXIF-based rotate operation. #2042

  • Ensure RGBA LZW TIFF returns correct channel count. #2064

v0.24.0 - 16th January 2020

  • Drop support for Node.js 8. #1910

  • Drop support for undefined input where options also provided. #1768

  • Move limitInputPixels and sequentialRead to input options, deprecating functions of the same name.

  • Expose delay and loop metadata for animated images. #1905

  • Ensure correct colour output for 16-bit, 2-channel PNG input with ICC profile. #2013

  • Prevent use of sequentialRead for rotate operations. #2016

  • Correctly bind max width and height values when using withoutEnlargement. #2024 @BrychanOdlum

  • Add support for input with 16-bit RGB profile. #2037

v0.23 - "vision"

Requires libvips v8.8.1.

v0.23.4 - 5th December 2019

  • Handle zero-length Buffer objects when using Node.js v13.2.0+.

  • Expose raw TIFFTAG_PHOTOSHOP metadata. #1600

  • Improve thread safety by using copy-on-write when updating metadata. #1986

v0.23.3 - 17th November 2019

  • Ensure trim operation supports images contained in the alpha channel. #1597

  • Ensure tile overlap option works as expected. #1921 @rustyguts

  • Allow compilation on FreeBSD and variants (broken since v0.23.0) #1952 @pouya-eghbali

  • Ensure modulate and other colour-based operations can co-exist. #1958

v0.23.2 - 28th October 2019

v0.23.1 - 26th September 2019

  • Ensure sharp.format.vips is present and correct (filesystem only). #1813

  • Ensure invalid width and height provided as options to resize throw. #1817

  • Allow use of 'heic' and 'heif' identifiers with toFormat. #1834 @jaubourg

  • Add premultiplied option to composite operation. #1835 @Andargor

  • Allow instance reuse with differing toBuffer options. #1860 @RaboliotTheGrey

  • Ensure image is at least 3x3 pixels before attempting trim operation.

v0.23.0 - 29th July 2019

  • Remove overlayWith previously deprecated in v0.22.0.

  • Add experimental support for HEIF images. Requires libvips compiled with libheif. #1105

  • Expose libwebp smartSubsample and reductionEffort options. #1545

  • Add experimental support for Worker Threads. #1558

  • Use libvips' built-in CMYK and sRGB profiles when required. #1619

  • Drop support for Node.js versions 6 and 11. #1674

  • Expose skipBlanks option for tile-based output. #1687 @RaboliotTheGrey

  • Allow use of failOnError option with Stream-based input. #1691

  • Fix rotate/extract ordering for non-90 angles. #1755 @iovdin

v0.22 - "uptake"

Requires libvips v8.7.4.

v0.22.1 - 25th April 2019

v0.22.0 - 18th March 2019

  • Remove functions previously deprecated in v0.21.0: background, crop, embed, ignoreAspectRatio, max, min and withoutEnlargement.

  • Add composite operation supporting multiple images and blend modes; deprecate overlayWith. #728

  • Add support for pages input option for multi-page input. #1566

  • Allow Stream-based input of raw pixel data. #1579

  • Add support for page input option to GIF and PDF. #1595 @ramiel

v0.21 - "teeth"

Requires libvips v8.7.0.

v0.21.3 - 19th January 2019

  • Input image decoding now fails fast, set failOnError to change this behaviour.

  • Failed filesystem-based input now separates missing file and invalid format errors. #1542

v0.21.2 - 13th January 2019

  • Ensure all metadata is removed from PNG output unless withMetadata used.

  • Ensure shortest edge is at least one pixel after resizing. #1003

  • Add ensureAlpha operation to add an alpha channel, if missing. #1153

  • Expose pages and pageHeight metadata for multi-page input images. #1205

  • Expose PNG output options requiring libimagequant. #1484

  • Expose underlying error message for invalid input. #1505

  • Prevent mutatation of options passed to jpeg. #1516

  • Ensure forced output format applied correctly when output chaining. #1528

v0.21.1 - 7th December 2018

  • Install: support sharp_dist_base_url npm config, like existing SHARP_DIST_BASE_URL. #1422 @SethWen

  • Ensure channel metadata is correct for raw, greyscale output. #1425

  • Add support for the "mitchell" kernel for image reductions. #1438 @Daiz

  • Allow separate parameters for gamma encoding and decoding. #1439 @Daiz

  • Build prototype with Object.assign to allow minification. #1475 @jaubourg

  • Expose libvips' recombination matrix operation. #1477 @fromkeith

  • Expose libvips' pyramid/tile options for TIFF output. #1483 @mbklein

v0.21.0 - 4th October 2018

  • Deprecate the following resize-related functions: crop, embed, ignoreAspectRatio, max, min and withoutEnlargement. Access to these is now via options passed to the resize function. For example: embed('north') is now resize(width, height, { fit: 'contain', position: 'north' }), crop('attention') is now resize(width, height, { fit: 'cover', position: 'attention' }), max().withoutEnlargement() is now resize(width, height, { fit: 'inside', withoutEnlargement: true }). #1135

  • Deprecate the background function. Per-operation background options added to resize, extend and flatten operations. #1392

  • Add size to metadata response (Stream and Buffer input only). #695

  • Switch from custom trim operation to vips_find_trim. #914

  • Add chromaSubsampling and isProgressive properties to metadata response. #1186

  • Drop Node 4 support. #1212

  • Enable SIMD convolution by default. #1213

  • Add experimental prebuilt binaries for musl-based Linux. #1379

  • Add support for arbitrary rotation angle via vips_rotate. #1385 @freezy

v0.20 - "prebuild"

Requires libvips v8.6.1.

v0.20.8 - 5th September 2018

  • Avoid race conditions when creating directories during installation. #1358 @ajhool

  • Accept floating point values for input density parameter. #1362 @aeirola

v0.20.7 - 21st August 2018

  • Use copy+unlink if rename operation fails during installation. #1345

v0.20.6 - 20th August 2018

  • Add removeAlpha operation to remove alpha channel, if any. #1248

  • Expose mozjpeg quant_table flag. #1285 @rexxars

  • Allow full WebP alphaQuality range of 0-100. #1290 @sylvaindumont

  • Cache libvips binaries to reduce re-install time. #1301

  • Ensure vendor platform mismatch throws error at install time. #1303

  • Improve install time error messages for FreeBSD users. #1310

  • Ensure extractChannel works with 16-bit images. #1330

  • Expose depth option for tile-based output. #1342 @alundavies

  • Add experimental entropy field to stats response.

v0.20.5 - 27th June 2018

v0.20.4 - 20th June 2018

  • Prevent possible rounding error when using shrink-on-load and 90/270 degree rotation. #1241 @anahit42

  • Ensure extractChannel sets correct single-channel colour space interpretation. #1257 @jeremychone

v0.20.3 - 29th May 2018

  • Fix tint operation by ensuring LAB interpretation and allowing negative values. #1235 @wezside

v0.20.2 - 28th April 2018

  • Add tint operation to set image chroma. #825 @rikh42

  • Add environment variable to ignore globally-installed libvips. #1165 @oncletom

  • Add support for page selection with multi-page input (GIF/TIFF). #1204 @woolite64

  • Add support for Group4 (CCITTFAX4) compression with TIFF output. #1208 @woolite64

v0.20.1 - 17th March 2018

  • Improve installation experience when a globally-installed libvips below the minimum required version is found. #1148

  • Prevent smartcrop error when cumulative rounding is below target size. #1154 @ralrom

  • Expose libvips' median filter operation. #1161 @BiancoA

v0.20.0 - 5th March 2018

  • Add support for prebuilt sharp binaries on common platforms. #186

v0.19 - "suit"

Requires libvips v8.6.1.

v0.19.1 - 24th February 2018

  • Expose libvips' linear transform feature. #1024 @3epnm

  • Expose angle option for tile-based output. #1121 @BiancoA

  • Prevent crop operation when image already at or below target dimensions. #1134 @pieh

v0.19.0 - 11th January 2018

  • Expose offset coordinates of strategy-based crop. #868 @mirohristov-com

  • PNG output now defaults to adaptiveFiltering=false, compressionLevel=9 #872 @wmertens

  • Add stats feature for pixel-derived image statistics. #915 @rnanwani

  • Add failOnError option to fail-fast on bad input image data. #976 @mceachen

  • Resize: switch to libvips' implementation, make fastShrinkOnLoad optional, remove interpolator and centreSampling options. #977 @jardakotesovec

  • Attach finish event listener to a clone only for Stream-based input. #995 @whmountains

  • Add tilecache before smartcrop to avoid over-computation of previous operations. #1028 @coffeebite

  • Prevent toFile extension taking precedence over requested format. #1037 @tomgallagher

  • Add support for gravity option to existing embed feature. #1038 @AzureByte

  • Expose IPTC and XMP metadata when available. #1079 @oaleynik

  • TIFF output: switch default predictor from 'none' to 'horizontal' to match libvips' behaviour.

v0.18 - "ridge"

Requires libvips v8.5.5.

v0.18.4 - 18th September 2017

  • Ensure input Buffer really is marked as Persistent, prevents mark-sweep GC. #950 @lfdoherty

v0.18.3 - 13th September 2017

v0.18.2 - 1st July 2017

  • Expose libvips' xres and yres properties for TIFF output. #828 @YvesBos

  • Ensure flip and flop operations work with auto-rotate. #837 @rexxars

  • Allow binary download URL override via SHARP_DIST_BASE_URL env variable. #841

  • Add support for Solus Linux. #857 @ekremkaraca

v0.18.1 - 30th May 2017

  • Remove regression from #781 that could cause incorrect shrink calculation. #831 @suprMax

v0.18.0 - 30th May 2017

  • Remove the previously-deprecated output format "option" functions: quality, progressive, compressionLevel, withoutAdaptiveFiltering, withoutChromaSubsampling, trellisQuantisation, trellisQuantization, overshootDeringing, optimiseScans and optimizeScans.

  • Ensure maximum output dimensions are based on the format to be used. #176 @stephanebachelier

  • Avoid costly (un)premultiply when using overlayWith without alpha channel. #573 @strarsis

  • Include pixel depth (e.g. "uchar") when reading metadata. #577 @moedusa

  • Add support for Buffer and Stream-based TIFF output. #587 @strarsis

  • Expose warnings from libvips via NODE_DEBUG=sharp environment variable. #607 @puzrin

  • Switch to the libvips implementation of "attention" and "entropy" crop strategies. #727

  • Improve performance and accuracy of nearest neighbour integral upsampling. #752 @MrIbby

  • Constructor single argument API: allow plain object, reject null/undefined. #768 @kub1x

  • Ensure ARM64 pre-built binaries use correct C++11 ABI version. #772 @ajiratech2

  • Prevent aliasing by using dynamic values for shrink(-on-load). #781 @kleisauke

  • Expose libvips' "squash" parameter to enable 1-bit TIFF output. #783 @YvesBos

  • Add support for rotation using any multiple of +/-90 degrees. #791 @ncoden

  • Add "jpg" alias to toFormat as shortened form of "jpeg". #814 @jingsam

v0.17 - "quill"

Requires libvips v8.4.2.

v0.17.3 - 1st April 2017

  • Allow toBuffer to optionally resolve a Promise with both info and data. #143 @salzhrani

  • Create blank image of given width, height, channels and background. #470 @pjarts

  • Add support for the "nearest" kernel for image reductions. #732 @alice0meta

  • Add support for TIFF compression and predictor options. #738 @kristojorg

v0.17.2 - 11th February 2017

  • Ensure Readable side of Stream can start flowing after Writable side has finished. #671 @danhaller

  • Expose WebP alpha quality, lossless and near-lossless output options. #685 @rnanwani

v0.17.1 - 15th January 2017

  • Improve error messages for invalid parameters. @spikeon #644

  • Simplify expression for finding vips-cpp libdir. #656

  • Allow HTTPS-over-HTTP proxy when downloading pre-compiled dependencies. @wangzhiwei1888 #679

v0.17.0 - 11th December 2016

  • Drop support for versions of Node prior to v4.

  • Deprecate the following output format "option" functions: quality, progressive, compressionLevel, withoutAdaptiveFiltering, withoutChromaSubsampling, trellisQuantisation, trellisQuantization, overshootDeringing, optimiseScans and optimizeScans. Access to these is now via output format functions, for example quality(n) is now jpeg({quality: n}) and/or webp({quality: n}).

  • Autoconvert GIF and SVG input to PNG output if no other format is specified.

  • Expose libvips' "centre" resize option to mimic *magick's +0.5px convention. #568

  • Ensure support for embedded base64 PNG and JPEG images within an SVG. #601 @dynamite-ready

  • Ensure premultiply operation occurs before box filter shrink. #605 @CmdrShepardsPie @teroparvinen

  • Add support for PNG and WebP tile-based output formats (in addition to JPEG). #622 @ppaskaris

  • Allow use of extend with greyscale input. #623 @ppaskaris

  • Allow non-RGB input to embed/extend onto background with an alpha channel. #646 @DaGaMs

v0.16 - "pencil"

Requires libvips v8.3.3

v0.16.2 - 22nd October 2016

  • Restrict readelf usage to Linux only when detecting global libvips version. #602 @caoko

v0.16.1 - 13th October 2016

  • C++11 ABI version is now auto-detected, remove sharp-cxx11 installation flag.

  • Add experimental 'attention' crop strategy. #295

  • Include .node extension for Meteor's require() implementation. #537 @isjackwild

  • Ensure convolution kernel scale is clamped to a minimum value of 1. #561 @abagshaw

  • Correct calculation of y-axis placement when overlaying image at a fixed point. #566 @Nateowami

v0.16.0 - 18th August 2016

  • Add pre-compiled libvips for OS X, ARMv7 and ARMv8. #312

  • Ensure boolean, bandbool, extractChannel ops occur before sRGB conversion. #504 @mhirsch

  • Recalculate factors after WebP shrink-on-load to avoid round-to-zero errors. #508 @asilvas

  • Prevent boolean errors during extract operation. #511 @mhirsch

  • Add joinChannel and toColourspace/toColorspace operations. #513 @mhirsch

  • Add support for raw pixel data with boolean and withOverlay operations. #516 @mhirsch

  • Prevent bandbool creating a single channel sRGB image. #519 @mhirsch

  • Ensure ICC profiles are removed from PNG output unless withMetadata used. #521 @ChrisPinewood

  • Add alpha channels, if missing, to overlayWith images. #540 @cmtt

  • Remove deprecated interpolateWith method - use resize(w, h, { interpolator: ... }) #310

v0.15 - "outfit"

Requires libvips v8.3.1

v0.15.1 - 12th July 2016

  • Concat Stream-based input in single operation for ~+3% perf and less GC. #429 @papandreou

  • Add alpha channel, if required, before extend operation. #439 @frulo

  • Allow overlay image to be repeated across entire image via tile option. #443 @lemnisk8

  • Add cutout option to overlayWith feature, applies only the alpha channel of the overlay image. #448 @kleisauke

  • Ensure scaling factors are calculated independently to prevent rounding errors. #452 @puzrin

  • Add --sharp-cxx11 flag to compile with gcc's new C++11 ABI. #456 @kapouer

  • Add top/left offset support to overlayWith operation. #473 @rnanwani

  • Add convolve operation for kernel-based convolution. #479 @mhirsch

  • Add greyscale option to threshold operation for colourspace conversion control. #480 @mhirsch

  • Ensure ICC profiles are licenced for distribution. #486 @kapouer

  • Allow images with an alpha channel to work with LAB-colourspace based sharpen. #490 @jwagner

  • Add trim operation to remove "boring" edges. #492 @kleisauke

  • Add bandbool feature for channel-wise boolean operations. #496 @mhirsch

  • Add extractChannel operation to extract a channel from an image. #497 @mhirsch

  • Add ability to read and write native libvips .v files. #500 @mhirsch

  • Add boolean feature for bitwise image operations. #501 @mhirsch

v0.15.0 - 21st May 2016

  • Use libvips' new Lanczos 3 kernel as default for image reduction. Deprecate interpolateWith method, now provided as a resize option. #310 @jcupitt

  • Take advantage of libvips v8.3 features. Add support for libvips' new GIF and SVG loaders. Pre-built binaries now include giflib and librsvg, exclude *magick. Use shrink-on-load for WebP input. Break existing sharpen API to accept sigma and improve precision. #369

  • Remove unnecessary (un)premultiply operations when not resizing/compositing. #413 @jardakotesovec

v0.14 - "needle"

Requires libvips v8.2.3

v0.14.1 - 16th April 2016

v0.14.0 - 2nd April 2016

  • Add ability to extend (pad) the edges of an image. #128 @blowsie

  • Add support for Zoomify and Google tile layouts. Breaks existing tile API. #223 @bdunnette

  • Improvements to overlayWith: differing sizes/formats, gravity, buffer input. #239 @chrisriley

  • Add entropy-based crop strategy to remove least interesting edges. #295 @rightaway

  • Expose density metadata; set density of images from vector input. #338 @lookfirst

  • Emit post-processing 'info' event for Stream output. #367 @salzhrani

  • Ensure output image EXIF Orientation values are within 1-8 range. #385 @jtobinisaniceguy

  • Ensure ratios are not swapped when rotating 90/270 and ignoring aspect. #387 @kleisauke

  • Remove deprecated style of calling extract API. Breaks calls using positional arguments. #276

v0.13 - "mind"

Requires libvips v8.2.2

v0.13.1 - 27th February 2016

  • Fix embedding onto transparent backgrounds; regression introduced in v0.13.0. #366 @diegocsandrim

v0.13.0 - 15th February 2016

  • Improve vector image support by allowing control of density/DPI. Switch pre-built libs from Imagemagick to Graphicsmagick. #110 @bradisbell

  • Add support for raw, uncompressed pixel Buffer/Stream input. #220 @mikemorris

  • Switch from libvips' C to C++ bindings, requires upgrade to v8.2.2. #299

  • Control number of open files in libvips' cache; breaks existing cache behaviour. #315 @impomezia

  • Ensure 16-bit input images can be normalised and embedded onto transparent backgrounds. #339 #340 @janaz

  • Ensure selected format takes precedence over any unknown output filename extension. #344 @ubaltaci

  • Add support for libvips' PBM, PGM, PPM and FITS image format loaders. #347 @oaleynik

  • Ensure default crop gravity is center/centre. #351 @joelmukuthu

  • Improve support for musl libc systems e.g. Alpine Linux. #354 #359 @download13 @wjordan

  • Small optimisation when reducing by an integral factor to favour shrink over affine.

  • Add support for gamma correction of images with an alpha channel.

v0.12 - "look"

Requires libvips v8.2.0

v0.12.2 - 16th January 2016

  • Upgrade libvips to v8.2.0 for improved vips_shrink.

  • Add pre-compiled libvips for ARMv6+ CPUs.

  • Ensure 16-bit input images work with embed option. #325 @janaz

  • Allow compilation with gmake to provide FreeBSD support. #326 @c0decafe

  • Attempt to remove temporary file after installation. #331 @dtoubelis

v0.12.1 - 12th December 2015

  • Allow use of SIMD vector instructions (via liborc) to be toggled on/off. #172 @bkw @puzrin

  • Ensure embedded ICC profiles output with perceptual intent. #321 @vlapo

  • Use the NPM-configured HTTPS proxy, if any, for binary downloads.

v0.12.0 - 23rd November 2015

  • Bundle pre-compiled libvips and its dependencies for 64-bit Linux and Windows. #42

  • Take advantage of libvips v8.1.0+ features. #152

  • Add support for 64-bit Windows. Drop support for 32-bit Windows. #224 @sabrehagen

  • Switch default interpolator to bicubic. #289 @mahnunchik

  • Pre-extract rotatation should not swap width/height. #296 @asilvas

  • Ensure 16-bit+alpha input images are (un)premultiplied correctly. #301 @izaakschroeder

  • Add threshold operation. #303 @dacarley

  • Add negate operation. #306 @dacarley

  • Support options Object with existing extract operation. #309 @papandreou

v0.11 - "knife"

v0.11.4 - 5th November 2015

  • Add corners, e.g. northeast, to existing gravity option. #291 @brandonaaron

  • Ensure correct auto-rotation for EXIF Orientation values 2 and 4. #288 @brandonaaron

  • Make static linking possible via --runtime_link install option. #287 @vlapo

v0.11.3 - 8th September 2015

  • Intrepret blurSigma, sharpenFlat, and sharpenJagged as double precision. #263 @chrisriley

v0.11.2 - 28th August 2015

  • Allow crop gravity to be provided as a String. #255 @papandreou
  • Add support for io.js v3 and Node v4. #246

v0.11.1 - 12th August 2015

  • Silence MSVC warning: "C4530: C++ exception handler used, but unwind semantics are not enabled". #244 @TheThing

  • Suppress gamma correction for input image with alpha transparency. #249 @compeak

v0.11.0 - 15th July 2015

  • Allow alpha transparency compositing via new overlayWith method. #97 @gasi

  • Expose raw ICC profile data as a Buffer when using metadata. #129 @homerjam

  • Allow image header updates via a parameter passed to existing withMetadata method. Provide initial support for EXIF Orientation tag, which if present is now removed when using rotate, flip or flop. #189 @h2non

  • Tighten constructor parameter checks. #221 @mikemorris

  • Allow one input Stream to be shared with two or more output Streams via new clone method. #235 @jaubourg

  • Use round instead of floor when auto-scaling dimensions to avoid floating-point rounding errors. #238 @richardadjogah

v0.10 - "judgment"

v0.10.1 - 1st June 2015

  • Allow embed of image with alpha transparency onto non-transparent background. #204 @mikemliu

  • Include C standard library for atoi as Xcode 6.3 appears to no longer do this. #228 @doggan

v0.10.0 - 23rd April 2015