# Changelog ## v0.33 - *gauge* Requires libvips v8.15.1 ### v0.33.2 - 12th January 2024 * TypeScript: add definition for `keepMetadata`. [#3914](https://github.com/lovell/sharp/pull/3914) [@abhi0498](https://github.com/abhi0498) * Ensure `extend` operation stays sequential when copying (regression in 0.32.0). [#3928](https://github.com/lovell/sharp/issues/3928) * Improve error handling for unsupported multi-page rotation. [#3940](https://github.com/lovell/sharp/issues/3940) ### v0.33.1 - 17th December 2023 * Add support for Yarn Plug'n'Play filesystem layout. [#3888](https://github.com/lovell/sharp/issues/3888) * Emit warning when attempting to use invalid ICC profiles. [#3895](https://github.com/lovell/sharp/issues/3895) * Ensure `VIPS_NOVECTOR` environment variable is respected. [#3897](https://github.com/lovell/sharp/pull/3897) [@icetee](https://github.com/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](https://github.com/RReverser) * Options for `trim` operation must be an Object, add new `lineArt` option. [#2363](https://github.com/lovell/sharp/issues/2363) * Improve luminance of `tint` operation with weighting function. [#3338](https://github.com/lovell/sharp/issues/3338) [@jcupitt](https://github.com/jcupitt) * Ensure all `Error` objects contain a `stack` property. [#3653](https://github.com/lovell/sharp/issues/3653) * Make `compression` option of `heif` mandatory to help reduce HEIF vs HEIC confusion. [#3740](https://github.com/lovell/sharp/issues/3740) * Ensure correct interpretation of 16-bit raw input. [#3808](https://github.com/lovell/sharp/issues/3808) * Add support for `miniswhite` when using TIFF output. [#3812](https://github.com/lovell/sharp/pull/3812) [@dnsbty](https://github.com/dnsbty) * TypeScript: add missing definition for `withMetadata` boolean. [#3823](https://github.com/lovell/sharp/pull/3823) [@uhthomas](https://github.com/uhthomas) * Add more fine-grained control over output metadata. [#3824](https://github.com/lovell/sharp/issues/3824) * Ensure multi-page extract remains sequential. [#3837](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/3767) * Ensure `withMetadata` can add ICC profiles to RGB16 output. [#3773](https://github.com/lovell/sharp/issues/3773) * Ensure `withMetadata` does not reduce 16-bit images to 8-bit (regression in 0.32.5). [#3773](https://github.com/lovell/sharp/issues/3773) * TypeScript: Add definitions for block and unblock. [#3799](https://github.com/lovell/sharp/pull/3799) [@ldrick](https://github.com/ldrick) ### v0.32.5 - 15th August 2023 * Upgrade to libvips v8.14.4 for upstream bug fixes. * TypeScript: Add missing `WebpPresetEnum` to definitions. [#3748](https://github.com/lovell/sharp/pull/3748) [@pilotso11](https://github.com/pilotso11) * Ensure compilation using musl v1.2.4. [#3755](https://github.com/lovell/sharp/pull/3755) [@kleisauke](https://github.com/kleisauke) * Ensure resize with a `fit` of `inside` respects 90/270 degree rotation. [#3756](https://github.com/lovell/sharp/issues/3756) * TypeScript: Ensure `minSize` property of `WebpOptions` is boolean. [#3758](https://github.com/lovell/sharp/pull/3758) [@sho-xizz](https://github.com/sho-xizz) * Ensure `withMetadata` adds default sRGB profile. [#3761](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/3581) ### v0.32.3 - 14th July 2023 * Expose `preset` option for WebP output. [#3639](https://github.com/lovell/sharp/issues/3639) * Ensure decoding remains sequential for all operations (regression in 0.32.2). [#3725](https://github.com/lovell/sharp/issues/3725) ### v0.32.2 - 11th July 2023 * Limit HEIF output dimensions to 16384x16384, matches libvips. * Ensure exceptions are not thrown when terminating. [#3569](https://github.com/lovell/sharp/issues/3569) * Ensure the same access method is used for all inputs (regression in 0.32.0). [#3669](https://github.com/lovell/sharp/issues/3669) * Improve detection of jp2 filename extensions. [#3674](https://github.com/lovell/sharp/pull/3674) [@bianjunjie1981](https://github.com/bianjunjie1981) * Guard use of smartcrop premultiplied option to prevent warning (regression in 0.32.1). [#3710](https://github.com/lovell/sharp/issues/3710) * Prevent over-compute in affine-based rotate before resize. [#3722](https://github.com/lovell/sharp/issues/3722) * Allow sequential read for EXIF-based auto-orientation. [#3725](https://github.com/lovell/sharp/issues/3725) ### v0.32.1 - 27th April 2023 * Add experimental `unflatten` operation. [#3461](https://github.com/lovell/sharp/pull/3461) [@antonmarsden](https://github.com/antonmarsden) * Ensure use of `flip` operation forces random access read (regression in 0.32.0). [#3600](https://github.com/lovell/sharp/issues/3600) * Ensure `linear` operation works with 16-bit input (regression in 0.31.3). [#3605](https://github.com/lovell/sharp/issues/3605) * Install: ensure proxy URLs are logged correctly. [#3615](https://github.com/lovell/sharp/pull/3615) [@TomWis97](https://github.com/TomWis97) * Ensure profile-less CMYK to CMYK roundtrip skips colourspace conversion. [#3620](https://github.com/lovell/sharp/issues/3620) * Add support for `modulate` operation when using non-sRGB pipeline colourspace. [#3620](https://github.com/lovell/sharp/issues/3620) * Ensure `trim` operation works with CMYK images (regression in 0.31.0). [#3636](https://github.com/lovell/sharp/issues/3636) * Install: coerce libc version to semver. [#3641](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/2767) * TypeScript definitions are now maintained and published directly, deprecating the `@types/sharp` package. [#3369](https://github.com/lovell/sharp/issues/3369) * Prebuilt binaries: ensure macOS 10.13+ support, as documented. [#3438](https://github.com/lovell/sharp/issues/3438) * Prebuilt binaries: prevent use of glib slice allocator, improves QEMU support. [#3448](https://github.com/lovell/sharp/issues/3448) * Add focus point coordinates to output when using attention based crop. [#3470](https://github.com/lovell/sharp/pull/3470) [@ejoebstl](https://github.com/ejoebstl) * Expose sharp version as `sharp.versions.sharp`. [#3471](https://github.com/lovell/sharp/issues/3471) * Respect `fastShrinkOnLoad` resize option for WebP input. [#3516](https://github.com/lovell/sharp/issues/3516) * Reduce sharpen `sigma` maximum from 10000 to 10. [#3521](https://github.com/lovell/sharp/issues/3521) * Add support for `ArrayBuffer` input. [#3548](https://github.com/lovell/sharp/pull/3548) [@kapouer](https://github.com/kapouer) * Add support to `extend` operation for `extendWith` to allow copy/mirror/repeat. [#3556](https://github.com/lovell/sharp/pull/3556) [@janaz](https://github.com/janaz) * Ensure all async JS callbacks are wrapped to help avoid possible race condition. [#3569](https://github.com/lovell/sharp/issues/3569) * Prebuilt binaries: support for tile-based output temporarily removed due to licensing issue. [#3581](https://github.com/lovell/sharp/issues/3581) * Add support to `normalise` for `lower` and `upper` percentiles. [#3583](https://github.com/lovell/sharp/pull/3583) [@LachlanNewman](https://github.com/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](https://github.com/lovell/sharp/issues/2731) * Add runtime detection of V8 memory cage, ensures compatibility with Electron 21 onwards. [#3384](https://github.com/lovell/sharp/issues/3384) * Expose `interFrameMaxError` and `interPaletteMaxError` GIF optimisation properties. [#3401](https://github.com/lovell/sharp/issues/3401) * Allow installation on Linux with glibc patch versions e.g. Fedora 38. [#3423](https://github.com/lovell/sharp/issues/3423) * Expand range of existing `sharpen` parameters to match libvips. [#3427](https://github.com/lovell/sharp/issues/3427) * Prevent possible race condition awaiting metadata of Stream-based input. [#3451](https://github.com/lovell/sharp/issues/3451) * Improve `extractChannel` support for 16-bit output colourspaces. [#3453](https://github.com/lovell/sharp/issues/3453) * Ignore `sequentialRead` option when calculating image statistics. [#3462](https://github.com/lovell/sharp/issues/3462) * Small performance improvement for operations that introduce a non-opaque background. [#3465](https://github.com/lovell/sharp/issues/3465) * Ensure integral output of `linear` operation. [#3468](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/3391) * Ensure auto-rotation works without resize (regression in 0.31.1) [#3422](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/3313) * Ensure `limitInputPixels` constructor option uses uint64. [#3349](https://github.com/lovell/sharp/pull/3349) [@marcosc90](https://github.com/marcosc90) * Ensure auto-rotation works with shrink-on-load and extract (regression in 0.31.0). [#3352](https://github.com/lovell/sharp/issues/3352) * Ensure AVIF output is always 8-bit. [#3358](https://github.com/lovell/sharp/issues/3358) * Ensure greyscale images can be trimmed (regression in 0.31.0). [#3386](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/200) * Use combined bounding box of alpha and non-alpha channels for `trim` operation. [#2166](https://github.com/lovell/sharp/issues/2166) * Add Buffer and Stream support to tile-based output. [#2238](https://github.com/lovell/sharp/issues/2238) * Add input `fileSuffix` and output `alias` to `format` information. [#2642](https://github.com/lovell/sharp/issues/2642) * Re-introduce support for greyscale ICC profiles (temporarily removed in 0.30.2). [#3114](https://github.com/lovell/sharp/issues/3114) * Add support for WebP and PackBits `compression` options with TIFF output. [#3198](https://github.com/lovell/sharp/issues/3198) * Ensure OpenSlide and FITS input works with custom libvips. [#3226](https://github.com/lovell/sharp/issues/3226) * Ensure `trim` operation is a no-op when it would reduce an image to nothing. [#3223](https://github.com/lovell/sharp/issues/3223) * Expose `vips_text` to create an image containing rendered text. [#3252](https://github.com/lovell/sharp/pull/3252) [@brahima](https://github.com/brahima) * Ensure only properties owned by the `withMetadata` EXIF Object are parsed. [#3292](https://github.com/lovell/sharp/issues/3292) * Expand `linear` operation to allow use of per-channel arrays. [#3303](https://github.com/lovell/sharp/pull/3303) [@antonmarsden](https://github.com/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](https://github.com/lovell/sharp/issues/3319) * Ensure PNG bitdepth can be set for non-palette output. [#3322](https://github.com/lovell/sharp/issues/3322) * Add trim option to provide a specific background colour. [#3332](https://github.com/lovell/sharp/pull/3332) [@mart-jansink](https://github.com/mart-jansink) * Ensure resized image is unpremultiplied before composite. [#3334](https://github.com/lovell/sharp/issues/3334) ## v0.30 - *dresser* Requires libvips v8.12.2 ### v0.30.7 - 22nd June 2022 * Ensure tiled composition always works with outside resizing. [#3227](https://github.com/lovell/sharp/issues/3227) * Allow WebP encoding effort of 0. [#3261](https://github.com/lovell/sharp/pull/3261) [@AlexanderTheGrey](https://github.com/AlexanderTheGrey) * Prevent upsampling via libwebp. [#3267](https://github.com/lovell/sharp/pull/3267) [@blacha](https://github.com/blacha) ### v0.30.6 - 30th May 2022 * Allow values for `limitInputPixels` larger than 32-bit. [#3238](https://github.com/lovell/sharp/issues/3238) * Ensure brew-installed `vips` can be detected (regression in 0.30.5). [#3239](https://github.com/lovell/sharp/issues/3239) ### v0.30.5 - 23rd May 2022 * Install: pass `PKG_CONFIG_PATH` via env rather than substitution. [@dwisiswant0](https://github.com/dwisiswant0) * Add support for `--libc` flag to improve cross-platform installation. [#3160](https://github.com/lovell/sharp/pull/3160) [@joonamo](https://github.com/joonamo) * Allow installation of prebuilt libvips binaries from filesystem. [#3196](https://github.com/lovell/sharp/pull/3196) [@ankurparihar](https://github.com/ankurparihar) * Fix rotate-then-extract for EXIF orientation 2. [#3218](https://github.com/lovell/sharp/pull/3218) [@jakob0fischl](https://github.com/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](https://github.com/lovell/sharp/issues/3139) * Add support for `TypedArray` input with `byteOffset` and `length`. [#3146](https://github.com/lovell/sharp/pull/3146) [@codepage949](https://github.com/codepage949) * Improve error message when attempting to render SVG input greater than 32767x32767. [#3167](https://github.com/lovell/sharp/issues/3167) * Add missing file name to 'Input file is missing' error message. [#3178](https://github.com/lovell/sharp/pull/3178) [@Brodan](https://github.com/Brodan) ### v0.30.3 - 14th March 2022 * Allow `sharpen` options to be provided more consistently as an Object. [#2561](https://github.com/lovell/sharp/issues/2561) * Expose `x1`, `y2` and `y3` parameters of `sharpen` operation. [#2935](https://github.com/lovell/sharp/issues/2935) * Prevent double unpremultiply with some composite blend modes (regression in 0.30.2). [#3118](https://github.com/lovell/sharp/issues/3118) ### v0.30.2 - 2nd March 2022 * Improve performance and accuracy when compositing multiple images. [#2286](https://github.com/lovell/sharp/issues/2286) * Expand pkgconfig search path for wider BSD support. [#3106](https://github.com/lovell/sharp/issues/3106) * Ensure Windows C++ runtime is linked statically (regression in 0.30.0). [#3110](https://github.com/lovell/sharp/pull/3110) [@kleisauke](https://github.com/kleisauke) * Temporarily ignore greyscale ICC profiles to workaround lcms bug. [#3112](https://github.com/lovell/sharp/issues/3112) ### v0.30.1 - 9th February 2022 * Allow use of `toBuffer` and `toFile` on the same instance. [#3044](https://github.com/lovell/sharp/issues/3044) * Skip shrink-on-load for known libjpeg rounding errors. [#3066](https://github.com/lovell/sharp/issues/3066) [@kleisauke](https://github.com/kleisauke) * Ensure withoutReduction does not interfere with contain/crop/embed. [#3081](https://github.com/lovell/sharp/pull/3081) [@kleisauke](https://github.com/kleisauke) * Ensure affine interpolator is correctly finalised. [#3083](https://github.com/lovell/sharp/pull/3083) [@kleisauke](https://github.com/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](https://github.com/lovell/sharp/issues/2541) * Improve animated (multi-page) image resize and extract. [#2789](https://github.com/lovell/sharp/pull/2789) [@kleisauke](https://github.com/kleisauke) * Expose platform and architecture of vendored binaries as `sharp.vendor`. [#2928](https://github.com/lovell/sharp/issues/2928) * Ensure 16-bit PNG output uses correct bitdepth. [#2958](https://github.com/lovell/sharp/pull/2958) [@gforge](https://github.com/gforge) * Properly emit close events for duplex streams. [#2976](https://github.com/lovell/sharp/pull/2976) [@driannaude](https://github.com/driannaude) * Expose `unlimited` option for SVG and PNG input, switches off safety features. [#2984](https://github.com/lovell/sharp/issues/2984) * Add `withoutReduction` option to resize operation. [#3006](https://github.com/lovell/sharp/pull/3006) [@christopherbradleybanks](https://github.com/christopherbradleybanks) * Add `resolutionUnit` as `tiff` option and expose in metadata. [#3023](https://github.com/lovell/sharp/pull/3023) [@ompal-sisodiya](https://github.com/ompal-sisodiya) * Ensure rotate-then-extract works with EXIF mirroring. [#3024](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/2951) * Impute TIFF `xres`/`yres` from `density` provided to `withMetadata`. [#2952](https://github.com/lovell/sharp/pull/2952) [@mbklein](https://github.com/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](https://github.com/lovell/sharp/issues/2890) * Allow use of 'tif' to select TIFF output. [#2893](https://github.com/lovell/sharp/pull/2893) [@erf](https://github.com/erf) * Improve error message on Windows for version conflict. [#2918](https://github.com/lovell/sharp/pull/2918) [@dkrnl](https://github.com/dkrnl) * Throw error rather than exit when invalid binaries detected. [#2931](https://github.com/lovell/sharp/issues/2931) ### v0.29.1 - 7th September 2021 * Add `lightness` option to `modulate` operation. [#2846](https://github.com/lovell/sharp/pull/2846) * Ensure correct PNG bitdepth is set based on number of colours. [#2855](https://github.com/lovell/sharp/issues/2855) * Ensure background is always premultiplied when compositing. [#2858](https://github.com/lovell/sharp/issues/2858) * Ensure images with P3 profiles retain full gamut. [#2862](https://github.com/lovell/sharp/issues/2862) * Add support for libvips compiled with OpenJPEG. [#2868](https://github.com/lovell/sharp/pull/2868) * Remove unsupported animation properties from AVIF output. [#2870](https://github.com/lovell/sharp/issues/2870) * Resolve paths before comparing input/output filenames. [#2878](https://github.com/lovell/sharp/pull/2878) [@rexxars](https://github.com/rexxars) * Allow use of speed 9 (fastest) for HEIF encoding. [#2879](https://github.com/lovell/sharp/pull/2879) [@rexxars](https://github.com/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](https://github.com/lovell/sharp/issues/2504) * AVIF encoding now defaults to `4:4:4` chroma subsampling. [#2562](https://github.com/lovell/sharp/issues/2562) * Allow multiple platform-arch binaries in same `node_modules` installation tree. [#2575](https://github.com/lovell/sharp/issues/2575) * Default to single-channel `b-w` space when `extractChannel` is used. [#2658](https://github.com/lovell/sharp/issues/2658) * Allow installation directory to contain spaces (regression in v0.26.0). [#2777](https://github.com/lovell/sharp/issues/2777) * Add `pipelineColourspace` operator to set the processing space. [#2704](https://github.com/lovell/sharp/pull/2704) [@Daiz](https://github.com/Daiz) * Allow bit depth to be set when using raw input and output. [#2762](https://github.com/lovell/sharp/pull/2762) [@mart-jansink](https://github.com/mart-jansink) * Allow `negate` to act only on non-alpha channels. [#2808](https://github.com/lovell/sharp/pull/2808) [@rexxars](https://github.com/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](https://github.com/lovell/sharp/issues/2714) * Add contrast limiting adaptive histogram equalization (CLAHE) operator. [#2726](https://github.com/lovell/sharp/pull/2726) [@baparham](https://github.com/baparham) ### v0.28.2 - 10th May 2021 * Allow `withMetadata` to set `density`. [#967](https://github.com/lovell/sharp/issues/967) * Skip shrink-on-load where one dimension <4px. [#2653](https://github.com/lovell/sharp/issues/2653) * Allow escaped proxy credentials. [#2664](https://github.com/lovell/sharp/pull/2664) [@msalettes](https://github.com/msalettes) * Add `premultiplied` flag for raw pixel data input. [#2685](https://github.com/lovell/sharp/pull/2685) [@mnutt](https://github.com/mnutt) * Detect empty input and throw a helpful error. [#2687](https://github.com/lovell/sharp/pull/2687) [@JakobJingleheimer](https://github.com/JakobJingleheimer) * Add install-time flag to skip version compatibility checks. [#2692](https://github.com/lovell/sharp/pull/2692) [@xemle](https://github.com/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](https://github.com/lovell/sharp/issues/650) * Add support for OME-TIFF Sub Image File Directories (subIFD). [#2557](https://github.com/lovell/sharp/issues/2557) * Allow `ensureAlpha` to set the alpha transparency level. [#2634](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/2578) * Ensure composite does not clip top and left offsets. [#2594](https://github.com/lovell/sharp/pull/2594) [@SHG42](https://github.com/SHG42) * Improve error handling of network failure at install time. [#2608](https://github.com/lovell/sharp/pull/2608) [@abradley](https://github.com/abradley) * Ensure `@id` attribute can be set for IIIF tile-based output. [#2612](https://github.com/lovell/sharp/issues/2612) [@edsilv](https://github.com/edsilv) * Ensure composite replicates the correct number of tiles for centred gravities. [#2626](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/2460) * Linux (musl): Prevent use of prebuilt linuxmusl-x64 binaries with musl >= 1.2.0. [#2570](https://github.com/lovell/sharp/issues/2570) * Improve 16-bit grey+alpha support by using libvips' `has_alpha` detection. [#2569](https://github.com/lovell/sharp/issues/2569) * Allow the use of non lower case extensions with `toFormat`. [#2581](https://github.com/lovell/sharp/pull/2581) [@florian-busch](https://github.com/florian-busch) * Allow use of `recomb` operation with single channel input. [#2584](https://github.com/lovell/sharp/issues/2584) ### v0.27.1 - 27th January 2021 * Ensure TIFF is cast when using float predictor. [#2502](https://github.com/lovell/sharp/pull/2502) [@randyridge](https://github.com/randyridge) * Add support for Uint8Array and Uint8ClampedArray input. [#2511](https://github.com/lovell/sharp/pull/2511) [@leon](https://github.com/leon) * Revert: ensure all platforms use fontconfig for font rendering. [#2515](https://github.com/lovell/sharp/issues/2515) * Expose libvips gaussnoise operation to allow creation of Gaussian noise. [#2527](https://github.com/lovell/sharp/pull/2527) [@alza54](https://github.com/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](https://github.com/lovell/sharp/pull/2391) [@CurosMJ](https://github.com/CurosMJ) * Ensure all platforms use fontconfig for font rendering. [#2399](https://github.com/lovell/sharp/issues/2399) ## v0.26 - *zoom* Requires libvips v8.10.0 ### v0.26.3 - 16th November 2020 * Expose libvips' affine operation. [#2336](https://github.com/lovell/sharp/pull/2336) [@guillevc](https://github.com/guillevc) * Fallback to tar.gz for prebuilt libvips when Brotli not available. [#2412](https://github.com/lovell/sharp/pull/2412) [@ascorbic](https://github.com/ascorbic) ### v0.26.2 - 14th October 2020 * Add support for EXR input. Requires libvips compiled with OpenEXR. [#698](https://github.com/lovell/sharp/issues/698) * Ensure support for yarn v2. [#2379](https://github.com/lovell/sharp/pull/2379) [@jalovatt](https://github.com/jalovatt) * Add centre/center option to tile-based output. [#2397](https://github.com/lovell/sharp/pull/2397) [@beig](https://github.com/beig) ### v0.26.1 - 20th September 2020 * Ensure correct pageHeight when verifying multi-page image dimensions. [#2343](https://github.com/lovell/sharp/pull/2343) [@derom](https://github.com/derom) * Allow input density range up to 100000 DPI. [#2348](https://github.com/lovell/sharp/pull/2348) [@stefanprobst](https://github.com/stefanprobst) * Ensure animation-related properties can be set for Stream-based input. [#2369](https://github.com/lovell/sharp/pull/2369) [@AcrylicShrimp](https://github.com/AcrylicShrimp) * Ensure `stats` can be calculated for 1x1 input. [#2372](https://github.com/lovell/sharp/issues/2372) * Ensure animated GIF output is optimised. [#2376](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/640) * Add support for animated GIF (requires \*magick) and WebP output. [#2012](https://github.com/lovell/sharp/pull/2012) [@deftomat](https://github.com/deftomat) * Add support for libvips ImageMagick v7 loaders. [#2258](https://github.com/lovell/sharp/pull/2258) [@vouillon](https://github.com/vouillon) * Allow multi-page input via \*magick. [#2259](https://github.com/lovell/sharp/pull/2259) [@vouillon](https://github.com/vouillon) * Add support to `withMetadata` for custom ICC profile. [#2271](https://github.com/lovell/sharp/pull/2271) [@roborourke](https://github.com/roborourke) * Ensure prebuilt binaries for ARM default to v7 when using Electron. [#2292](https://github.com/lovell/sharp/pull/2292) [@diegodev3](https://github.com/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](https://github.com/lovell/sharp/pull/2217) [@malice00](https://github.com/malice00) * Enable PNG palette when setting quality, colours, colors or dither. [#2226](https://github.com/lovell/sharp/pull/2226) [@romaleev](https://github.com/romaleev) * Add `level` constructor option to use a specific level of a multi-level image. Expose `levels` metadata for multi-level images. [#2222](https://github.com/lovell/sharp/issues/2222) * Add support for named `alpha` channel to `extractChannel` operation. [#2138](https://github.com/lovell/sharp/issues/2138) * Add experimental `sharpness` calculation to `stats()` response. [#2251](https://github.com/lovell/sharp/issues/2251) * Emit `warning` event for non-critical processing problems. [#2032](https://github.com/lovell/sharp/issues/2032) ### v0.25.3 - 17th May 2020 * Ensure libvips is initialised only once, improves worker thread safety. [#2143](https://github.com/lovell/sharp/issues/2143) * Ensure npm platform flag is respected when copying DLLs. [#2188](https://github.com/lovell/sharp/pull/2188) [@dimadeveatii](https://github.com/dimadeveatii) * Allow SVG input with large inline images to be parsed. [#2195](https://github.com/lovell/sharp/issues/2195) ### v0.25.2 - 20th March 2020 * Provide prebuilt binaries for Linux ARM64v8. * Add IIIF layout support to tile-based output. [#2098](https://github.com/lovell/sharp/pull/2098) [@edsilv](https://github.com/edsilv) * Ensure input options are consistently and correctly detected. [#2118](https://github.com/lovell/sharp/issues/2118) * Ensure N-API prebuilt binaries work on RHEL7 and its derivatives. [#2119](https://github.com/lovell/sharp/issues/2119) * Ensure AsyncWorker options are persisted. [#2130](https://github.com/lovell/sharp/issues/2130) ### v0.25.1 - 7th March 2020 * Ensure prebuilt binaries are fetched based on N-API version. [#2117](https://github.com/lovell/sharp/issues/2117) ### v0.25.0 - 7th March 2020 * Remove `limitInputPixels` and `sequentialRead` previously deprecated in v0.24.0. * Migrate internals to N-API. [#1282](https://github.com/lovell/sharp/issues/1282) * Add support for 32-bit Windows. [#2088](https://github.com/lovell/sharp/issues/2088) * Ensure correct ordering of rotate-then-trim operations. [#2087](https://github.com/lovell/sharp/issues/2087) * Ensure composite accepts `limitInputPixels` and `sequentialRead` input options. [#2099](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/2042) * Ensure RGBA LZW TIFF returns correct channel count. [#2064](https://github.com/lovell/sharp/issues/2064) ### v0.24.0 - 16th January 2020 * Drop support for Node.js 8. [#1910](https://github.com/lovell/sharp/issues/1910) * Drop support for undefined input where options also provided. [#1768](https://github.com/lovell/sharp/issues/1768) * Move `limitInputPixels` and `sequentialRead` to input options, deprecating functions of the same name. * Expose `delay` and `loop` metadata for animated images. [#1905](https://github.com/lovell/sharp/issues/1905) * Ensure correct colour output for 16-bit, 2-channel PNG input with ICC profile. [#2013](https://github.com/lovell/sharp/issues/2013) * Prevent use of sequentialRead for rotate operations. [#2016](https://github.com/lovell/sharp/issues/2016) * Correctly bind max width and height values when using withoutEnlargement. [#2024](https://github.com/lovell/sharp/pull/2024) [@BrychanOdlum](https://github.com/BrychanOdlum) * Add support for input with 16-bit RGB profile. [#2037](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/1600) * Improve thread safety by using copy-on-write when updating metadata. [#1986](https://github.com/lovell/sharp/issues/1986) ### v0.23.3 - 17th November 2019 * Ensure `trim` operation supports images contained in the alpha channel. [#1597](https://github.com/lovell/sharp/issues/1597) * Ensure tile `overlap` option works as expected. [#1921](https://github.com/lovell/sharp/pull/1921) [@rustyguts](https://github.com/rustyguts) * Allow compilation on FreeBSD and variants (broken since v0.23.0) [#1952](https://github.com/lovell/sharp/pull/1952) [@pouya-eghbali](https://github.com/pouya-eghbali) * Ensure `modulate` and other colour-based operations can co-exist. [#1958](https://github.com/lovell/sharp/issues/1958) ### v0.23.2 - 28th October 2019 * Add `background` option to tile output operation. [#1924](https://github.com/lovell/sharp/pull/1924) [@neave](https://github.com/neave) * Add support for Node.js 13. [#1932](https://github.com/lovell/sharp/pull/1932) [@MayhemYDG](https://github.com/MayhemYDG) ### v0.23.1 - 26th September 2019 * Ensure `sharp.format.vips` is present and correct (filesystem only). [#1813](https://github.com/lovell/sharp/issues/1813) * Ensure invalid `width` and `height` provided as options to `resize` throw. [#1817](https://github.com/lovell/sharp/issues/1817) * Allow use of 'heic' and 'heif' identifiers with `toFormat`. [#1834](https://github.com/lovell/sharp/pull/1834) [@jaubourg](https://github.com/jaubourg) * Add `premultiplied` option to `composite` operation. [#1835](https://github.com/lovell/sharp/pull/1835) [@Andargor](https://github.com/Andargor) * Allow instance reuse with differing `toBuffer` options. [#1860](https://github.com/lovell/sharp/pull/1860) [@RaboliotTheGrey](https://github.com/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](https://github.com/lovell/sharp/issues/1105) * Expose libwebp `smartSubsample` and `reductionEffort` options. [#1545](https://github.com/lovell/sharp/issues/1545) * Add experimental support for Worker Threads. [#1558](https://github.com/lovell/sharp/issues/1558) * Use libvips' built-in CMYK and sRGB profiles when required. [#1619](https://github.com/lovell/sharp/issues/1619) * Drop support for Node.js versions 6 and 11. [#1674](https://github.com/lovell/sharp/issues/1674) * Expose `skipBlanks` option for tile-based output. [#1687](https://github.com/lovell/sharp/pull/1687) [@RaboliotTheGrey](https://github.com/RaboliotTheGrey) * Allow use of `failOnError` option with Stream-based input. [#1691](https://github.com/lovell/sharp/issues/1691) * Fix rotate/extract ordering for non-90 angles. [#1755](https://github.com/lovell/sharp/pull/1755) [@iovdin](https://github.com/iovdin) ## v0.22 - "*uptake*" Requires libvips v8.7.4. ### v0.22.1 - 25th April 2019 * Add `modulate` operation for brightness, saturation and hue. [#1601](https://github.com/lovell/sharp/pull/1601) [@Goues](https://github.com/Goues) * Improve help messaging should `require("sharp")` fail. [#1638](https://github.com/lovell/sharp/pull/1638) [@sidharthachatterjee](https://github.com/sidharthachatterjee) * Add support for Node 12. [#1668](https://github.com/lovell/sharp/issues/1668) ### 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](https://github.com/lovell/sharp/issues/728) * Add support for `pages` input option for multi-page input. [#1566](https://github.com/lovell/sharp/issues/1566) * Allow Stream-based input of raw pixel data. [#1579](https://github.com/lovell/sharp/issues/1579) * Add support for `page` input option to GIF and PDF. [#1595](https://github.com/lovell/sharp/pull/1595) [@ramiel](https://github.com/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](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/1003) * Add `ensureAlpha` operation to add an alpha channel, if missing. [#1153](https://github.com/lovell/sharp/issues/1153) * Expose `pages` and `pageHeight` metadata for multi-page input images. [#1205](https://github.com/lovell/sharp/issues/1205) * Expose PNG output options requiring libimagequant. [#1484](https://github.com/lovell/sharp/issues/1484) * Expose underlying error message for invalid input. [#1505](https://github.com/lovell/sharp/issues/1505) * Prevent mutatation of options passed to `jpeg`. [#1516](https://github.com/lovell/sharp/issues/1516) * Ensure forced output format applied correctly when output chaining. [#1528](https://github.com/lovell/sharp/issues/1528) ### v0.21.1 - 7th December 2018 * Install: support `sharp_dist_base_url` npm config, like existing `SHARP_DIST_BASE_URL`. [#1422](https://github.com/lovell/sharp/pull/1422) [@SethWen](https://github.com/SethWen) * Ensure `channel` metadata is correct for raw, greyscale output. [#1425](https://github.com/lovell/sharp/issues/1425) * Add support for the "mitchell" kernel for image reductions. [#1438](https://github.com/lovell/sharp/pull/1438) [@Daiz](https://github.com/Daiz) * Allow separate parameters for gamma encoding and decoding. [#1439](https://github.com/lovell/sharp/pull/1439) [@Daiz](https://github.com/Daiz) * Build prototype with `Object.assign` to allow minification. [#1475](https://github.com/lovell/sharp/pull/1475) [@jaubourg](https://github.com/jaubourg) * Expose libvips' recombination matrix operation. [#1477](https://github.com/lovell/sharp/pull/1477) [@fromkeith](https://github.com/fromkeith) * Expose libvips' pyramid/tile options for TIFF output. [#1483](https://github.com/lovell/sharp/pull/1483) [@mbklein](https://github.com/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](https://github.com/lovell/sharp/issues/1135) * Deprecate the `background` function. Per-operation `background` options added to `resize`, `extend` and `flatten` operations. [#1392](https://github.com/lovell/sharp/issues/1392) * Add `size` to `metadata` response (Stream and Buffer input only). [#695](https://github.com/lovell/sharp/issues/695) * Switch from custom trim operation to `vips_find_trim`. [#914](https://github.com/lovell/sharp/issues/914) * Add `chromaSubsampling` and `isProgressive` properties to `metadata` response. [#1186](https://github.com/lovell/sharp/issues/1186) * Drop Node 4 support. [#1212](https://github.com/lovell/sharp/issues/1212) * Enable SIMD convolution by default. [#1213](https://github.com/lovell/sharp/issues/1213) * Add experimental prebuilt binaries for musl-based Linux. [#1379](https://github.com/lovell/sharp/issues/1379) * Add support for arbitrary rotation angle via vips_rotate. [#1385](https://github.com/lovell/sharp/pull/1385) [@freezy](https://github.com/freezy) ## v0.20 - "*prebuild*" Requires libvips v8.6.1. ### v0.20.8 - 5th September 2018 * Avoid race conditions when creating directories during installation. [#1358](https://github.com/lovell/sharp/pull/1358) [@ajhool](https://github.com/ajhool) * Accept floating point values for input density parameter. [#1362](https://github.com/lovell/sharp/pull/1362) [@aeirola](https://github.com/aeirola) ### v0.20.7 - 21st August 2018 * Use copy+unlink if rename operation fails during installation. [#1345](https://github.com/lovell/sharp/issues/1345) ### v0.20.6 - 20th August 2018 * Add removeAlpha operation to remove alpha channel, if any. [#1248](https://github.com/lovell/sharp/issues/1248) * Expose mozjpeg quant_table flag. [#1285](https://github.com/lovell/sharp/pull/1285) [@rexxars](https://github.com/rexxars) * Allow full WebP alphaQuality range of 0-100. [#1290](https://github.com/lovell/sharp/pull/1290) [@sylvaindumont](https://github.com/sylvaindumont) * Cache libvips binaries to reduce re-install time. [#1301](https://github.com/lovell/sharp/issues/1301) * Ensure vendor platform mismatch throws error at install time. [#1303](https://github.com/lovell/sharp/issues/1303) * Improve install time error messages for FreeBSD users. [#1310](https://github.com/lovell/sharp/issues/1310) * Ensure extractChannel works with 16-bit images. [#1330](https://github.com/lovell/sharp/issues/1330) * Expose depth option for tile-based output. [#1342](https://github.com/lovell/sharp/pull/1342) [@alundavies](https://github.com/alundavies) * Add experimental entropy field to stats response. ### v0.20.5 - 27th June 2018 * Expose libjpeg optimize_coding flag. [#1265](https://github.com/lovell/sharp/pull/1265) [@tomlokhorst](https://github.com/tomlokhorst) ### v0.20.4 - 20th June 2018 * Prevent possible rounding error when using shrink-on-load and 90/270 degree rotation. [#1241](https://github.com/lovell/sharp/issues/1241) [@anahit42](https://github.com/anahit42) * Ensure extractChannel sets correct single-channel colour space interpretation. [#1257](https://github.com/lovell/sharp/issues/1257) [@jeremychone](https://github.com/jeremychone) ### v0.20.3 - 29th May 2018 * Fix tint operation by ensuring LAB interpretation and allowing negative values. [#1235](https://github.com/lovell/sharp/issues/1235) [@wezside](https://github.com/wezside) ### v0.20.2 - 28th April 2018 * Add tint operation to set image chroma. [#825](https://github.com/lovell/sharp/pull/825) [@rikh42](https://github.com/rikh42) * Add environment variable to ignore globally-installed libvips. [#1165](https://github.com/lovell/sharp/pull/1165) [@oncletom](https://github.com/oncletom) * Add support for page selection with multi-page input (GIF/TIFF). [#1204](https://github.com/lovell/sharp/pull/1204) [@woolite64](https://github.com/woolite64) * Add support for Group4 (CCITTFAX4) compression with TIFF output. [#1208](https://github.com/lovell/sharp/pull/1208) [@woolite64](https://github.com/woolite64) ### v0.20.1 - 17th March 2018 * Improve installation experience when a globally-installed libvips below the minimum required version is found. [#1148](https://github.com/lovell/sharp/issues/1148) * Prevent smartcrop error when cumulative rounding is below target size. [#1154](https://github.com/lovell/sharp/issues/1154) [@ralrom](https://github.com/ralrom) * Expose libvips' median filter operation. [#1161](https://github.com/lovell/sharp/pull/1161) [@BiancoA](https://github.com/BiancoA) ### v0.20.0 - 5th March 2018 * Add support for prebuilt sharp binaries on common platforms. [#186](https://github.com/lovell/sharp/issues/186) ## v0.19 - "*suit*" Requires libvips v8.6.1. ### v0.19.1 - 24th February 2018 * Expose libvips' linear transform feature. [#1024](https://github.com/lovell/sharp/pull/1024) [@3epnm](https://github.com/3epnm) * Expose angle option for tile-based output. [#1121](https://github.com/lovell/sharp/pull/1121) [@BiancoA](https://github.com/BiancoA) * Prevent crop operation when image already at or below target dimensions. [#1134](https://github.com/lovell/sharp/issues/1134) [@pieh](https://github.com/pieh) ### v0.19.0 - 11th January 2018 * Expose offset coordinates of strategy-based crop. [#868](https://github.com/lovell/sharp/issues/868) [@mirohristov-com](https://github.com/mirohristov-com) * PNG output now defaults to adaptiveFiltering=false, compressionLevel=9 [#872](https://github.com/lovell/sharp/issues/872) [@wmertens](https://github.com/wmertens) * Add stats feature for pixel-derived image statistics. [#915](https://github.com/lovell/sharp/pull/915) [@rnanwani](https://github.com/rnanwani) * Add failOnError option to fail-fast on bad input image data. [#976](https://github.com/lovell/sharp/pull/976) [@mceachen](https://github.com/mceachen) * Resize: switch to libvips' implementation, make fastShrinkOnLoad optional, remove interpolator and centreSampling options. [#977](https://github.com/lovell/sharp/pull/977) [@jardakotesovec](https://github.com/jardakotesovec) * Attach finish event listener to a clone only for Stream-based input. [#995](https://github.com/lovell/sharp/issues/995) [@whmountains](https://github.com/whmountains) * Add tilecache before smartcrop to avoid over-computation of previous operations. [#1028](https://github.com/lovell/sharp/issues/1028) [@coffeebite](https://github.com/coffeebite) * Prevent toFile extension taking precedence over requested format. [#1037](https://github.com/lovell/sharp/issues/1037) [@tomgallagher](https://github.com/tomgallagher) * Add support for gravity option to existing embed feature. [#1038](https://github.com/lovell/sharp/pull/1038) [@AzureByte](https://github.com/AzureByte) * Expose IPTC and XMP metadata when available. [#1079](https://github.com/lovell/sharp/pull/1079) [@oaleynik](https://github.com/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](https://github.com/lovell/sharp/issues/950) [@lfdoherty](https://github.com/lfdoherty) ### v0.18.3 - 13th September 2017 * Skip shrink-on-load when trimming. [#888](https://github.com/lovell/sharp/pull/888) [@kleisauke](https://github.com/kleisauke) * Migrate from got to simple-get for basic auth support. [#945](https://github.com/lovell/sharp/pull/945) [@pbomb](https://github.com/pbomb) ### v0.18.2 - 1st July 2017 * Expose libvips' xres and yres properties for TIFF output. [#828](https://github.com/lovell/sharp/pull/828) [@YvesBos](https://github.com/YvesBos) * Ensure flip and flop operations work with auto-rotate. [#837](https://github.com/lovell/sharp/issues/837) [@rexxars](https://github.com/rexxars) * Allow binary download URL override via SHARP_DIST_BASE_URL env variable. [#841](https://github.com/lovell/sharp/issues/841) * Add support for Solus Linux. [#857](https://github.com/lovell/sharp/pull/857) [@ekremkaraca](https://github.com/ekremkaraca) ### v0.18.1 - 30th May 2017 * Remove regression from #781 that could cause incorrect shrink calculation. [#831](https://github.com/lovell/sharp/issues/831) [@suprMax](https://github.com/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](https://github.com/lovell/sharp/issues/176) [@stephanebachelier](https://github.com/stephanebachelier) * Avoid costly (un)premultiply when using overlayWith without alpha channel. [#573](https://github.com/lovell/sharp/issues/573) [@strarsis](https://github.com/strarsis) * Include pixel depth (e.g. "uchar") when reading metadata. [#577](https://github.com/lovell/sharp/issues/577) [@moedusa](https://github.com/moedusa) * Add support for Buffer and Stream-based TIFF output. [#587](https://github.com/lovell/sharp/issues/587) [@strarsis](https://github.com/strarsis) * Expose warnings from libvips via NODE_DEBUG=sharp environment variable. [#607](https://github.com/lovell/sharp/issues/607) [@puzrin](https://github.com/puzrin) * Switch to the libvips implementation of "attention" and "entropy" crop strategies. [#727](https://github.com/lovell/sharp/issues/727) * Improve performance and accuracy of nearest neighbour integral upsampling. [#752](https://github.com/lovell/sharp/issues/752) [@MrIbby](https://github.com/MrIbby) * Constructor single argument API: allow plain object, reject null/undefined. [#768](https://github.com/lovell/sharp/issues/768) [@kub1x](https://github.com/kub1x) * Ensure ARM64 pre-built binaries use correct C++11 ABI version. [#772](https://github.com/lovell/sharp/issues/772) [@ajiratech2](https://github.com/ajiratech2) * Prevent aliasing by using dynamic values for shrink(-on-load). [#781](https://github.com/lovell/sharp/issues/781) [@kleisauke](https://github.com/kleisauke) * Expose libvips' "squash" parameter to enable 1-bit TIFF output. [#783](https://github.com/lovell/sharp/pull/783) [@YvesBos](https://github.com/YvesBos) * Add support for rotation using any multiple of +/-90 degrees. [#791](https://github.com/lovell/sharp/pull/791) [@ncoden](https://github.com/ncoden) * Add "jpg" alias to toFormat as shortened form of "jpeg". [#814](https://github.com/lovell/sharp/pull/814) [@jingsam](https://github.com/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](https://github.com/lovell/sharp/issues/143) [@salzhrani](https://github.com/salzhrani) * Create blank image of given width, height, channels and background. [#470](https://github.com/lovell/sharp/issues/470) [@pjarts](https://github.com/pjarts) * Add support for the "nearest" kernel for image reductions. [#732](https://github.com/lovell/sharp/pull/732) [@alice0meta](https://github.com/alice0meta) * Add support for TIFF compression and predictor options. [#738](https://github.com/lovell/sharp/pull/738) [@kristojorg](https://github.com/kristojorg) ### v0.17.2 - 11th February 2017 * Ensure Readable side of Stream can start flowing after Writable side has finished. [#671](https://github.com/lovell/sharp/issues/671) [@danhaller](https://github.com/danhaller) * Expose WebP alpha quality, lossless and near-lossless output options. [#685](https://github.com/lovell/sharp/pull/685) [@rnanwani](https://github.com/rnanwani) ### v0.17.1 - 15th January 2017 * Improve error messages for invalid parameters. [@spikeon](https://github.com/spikeon) [#644](https://github.com/lovell/sharp/pull/644) * Simplify expression for finding vips-cpp libdir. [#656](https://github.com/lovell/sharp/pull/656) * Allow HTTPS-over-HTTP proxy when downloading pre-compiled dependencies. [@wangzhiwei1888](https://github.com/wangzhiwei1888) [#679](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/568) * Ensure support for embedded base64 PNG and JPEG images within an SVG. [#601](https://github.com/lovell/sharp/issues/601) [@dynamite-ready](https://github.com/dynamite-ready) * Ensure premultiply operation occurs before box filter shrink. [#605](https://github.com/lovell/sharp/issues/605) [@CmdrShepardsPie](https://github.com/CmdrShepardsPie) [@teroparvinen](https://github.com/teroparvinen) * Add support for PNG and WebP tile-based output formats (in addition to JPEG). [#622](https://github.com/lovell/sharp/pull/622) [@ppaskaris](https://github.com/ppaskaris) * Allow use of extend with greyscale input. [#623](https://github.com/lovell/sharp/pull/623) [@ppaskaris](https://github.com/ppaskaris) * Allow non-RGB input to embed/extend onto background with an alpha channel. [#646](https://github.com/lovell/sharp/issues/646) [@DaGaMs](https://github.com/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](https://github.com/lovell/sharp/issues/602) [@caoko](https://github.com/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](https://github.com/lovell/sharp/issues/295) * Include .node extension for Meteor's require() implementation. [#537](https://github.com/lovell/sharp/issues/537) [@isjackwild](https://github.com/isjackwild) * Ensure convolution kernel scale is clamped to a minimum value of 1. [#561](https://github.com/lovell/sharp/issues/561) [@abagshaw](https://github.com/abagshaw) * Correct calculation of y-axis placement when overlaying image at a fixed point. [#566](https://github.com/lovell/sharp/issues/566) [@Nateowami](https://github.com/Nateowami) ### v0.16.0 - 18th August 2016 * Add pre-compiled libvips for OS X, ARMv7 and ARMv8. [#312](https://github.com/lovell/sharp/issues/312) * Ensure boolean, bandbool, extractChannel ops occur before sRGB conversion. [#504](https://github.com/lovell/sharp/pull/504) [@mhirsch](https://github.com/mhirsch) * Recalculate factors after WebP shrink-on-load to avoid round-to-zero errors. [#508](https://github.com/lovell/sharp/issues/508) [@asilvas](https://github.com/asilvas) * Prevent boolean errors during extract operation. [#511](https://github.com/lovell/sharp/pull/511) [@mhirsch](https://github.com/mhirsch) * Add joinChannel and toColourspace/toColorspace operations. [#513](https://github.com/lovell/sharp/pull/513) [@mhirsch](https://github.com/mhirsch) * Add support for raw pixel data with boolean and withOverlay operations. [#516](https://github.com/lovell/sharp/pull/516) [@mhirsch](https://github.com/mhirsch) * Prevent bandbool creating a single channel sRGB image. [#519](https://github.com/lovell/sharp/pull/519) [@mhirsch](https://github.com/mhirsch) * Ensure ICC profiles are removed from PNG output unless withMetadata used. [#521](https://github.com/lovell/sharp/issues/521) [@ChrisPinewood](https://github.com/ChrisPinewood) * Add alpha channels, if missing, to overlayWith images. [#540](https://github.com/lovell/sharp/pull/540) [@cmtt](https://github.com/cmtt) * Remove deprecated interpolateWith method - use resize(w, h, { interpolator: ... }) [#310](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/429) [@papandreou](https://github.com/papandreou) * Add alpha channel, if required, before extend operation. [#439](https://github.com/lovell/sharp/pull/439) [@frulo](https://github.com/frulo) * Allow overlay image to be repeated across entire image via tile option. [#443](https://github.com/lovell/sharp/pull/443) [@lemnisk8](https://github.com/lemnisk8) * Add cutout option to overlayWith feature, applies only the alpha channel of the overlay image. [#448](https://github.com/lovell/sharp/pull/448) [@kleisauke](https://github.com/kleisauke) * Ensure scaling factors are calculated independently to prevent rounding errors. [#452](https://github.com/lovell/sharp/issues/452) [@puzrin](https://github.com/puzrin) * Add --sharp-cxx11 flag to compile with gcc's new C++11 ABI. [#456](https://github.com/lovell/sharp/pull/456) [@kapouer](https://github.com/kapouer) * Add top/left offset support to overlayWith operation. [#473](https://github.com/lovell/sharp/pull/473) [@rnanwani](https://github.com/rnanwani) * Add convolve operation for kernel-based convolution. [#479](https://github.com/lovell/sharp/pull/479) [@mhirsch](https://github.com/mhirsch) * Add greyscale option to threshold operation for colourspace conversion control. [#480](https://github.com/lovell/sharp/pull/480) [@mhirsch](https://github.com/mhirsch) * Ensure ICC profiles are licenced for distribution. [#486](https://github.com/lovell/sharp/issues/486) [@kapouer](https://github.com/kapouer) * Allow images with an alpha channel to work with LAB-colourspace based sharpen. [#490](https://github.com/lovell/sharp/issues/490) [@jwagner](https://github.com/jwagner) * Add trim operation to remove "boring" edges. [#492](https://github.com/lovell/sharp/pull/492) [@kleisauke](https://github.com/kleisauke) * Add bandbool feature for channel-wise boolean operations. [#496](https://github.com/lovell/sharp/pull/496) [@mhirsch](https://github.com/mhirsch) * Add extractChannel operation to extract a channel from an image. [#497](https://github.com/lovell/sharp/pull/497) [@mhirsch](https://github.com/mhirsch) * Add ability to read and write native libvips .v files. [#500](https://github.com/lovell/sharp/pull/500) [@mhirsch](https://github.com/mhirsch) * Add boolean feature for bitwise image operations. [#501](https://github.com/lovell/sharp/pull/501) [@mhirsch](https://github.com/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](https://github.com/lovell/sharp/issues/310) [@jcupitt](https://github.com/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](https://github.com/lovell/sharp/issues/369) * Remove unnecessary (un)premultiply operations when not resizing/compositing. [#413](https://github.com/lovell/sharp/issues/413) [@jardakotesovec](https://github.com/jardakotesovec) ## v0.14 - "*needle*" Requires libvips v8.2.3 ### v0.14.1 - 16th April 2016 * Allow removal of limitation on input pixel count via limitInputPixels. Use with care. [#250](https://github.com/lovell/sharp/issues/250) [#316](https://github.com/lovell/sharp/pull/316) [@anandthakker](https://github.com/anandthakker) [@kentongray](https://github.com/kentongray) * Use final output image for metadata passed to callback. [#399](https://github.com/lovell/sharp/pull/399) [@salzhrani](https://github.com/salzhrani) * Add support for writing tiled images to a zip container. [#402](https://github.com/lovell/sharp/pull/402) [@felixbuenemann](https://github.com/felixbuenemann) * Allow use of embed with 1 and 2 channel images. [#411](https://github.com/lovell/sharp/issues/411) [@janaz](https://github.com/janaz) * Improve Electron compatibility by allowing node-gyp rebuilds without npm. [#412](https://github.com/lovell/sharp/issues/412) [@nouh](https://github.com/nouh) ### v0.14.0 - 2nd April 2016 * Add ability to extend (pad) the edges of an image. [#128](https://github.com/lovell/sharp/issues/128) [@blowsie](https://github.com/blowsie) * Add support for Zoomify and Google tile layouts. Breaks existing tile API. [#223](https://github.com/lovell/sharp/issues/223) [@bdunnette](https://github.com/bdunnette) * Improvements to overlayWith: differing sizes/formats, gravity, buffer input. [#239](https://github.com/lovell/sharp/issues/239) [@chrisriley](https://github.com/chrisriley) * Add entropy-based crop strategy to remove least interesting edges. [#295](https://github.com/lovell/sharp/issues/295) [@rightaway](https://github.com/rightaway) * Expose density metadata; set density of images from vector input. [#338](https://github.com/lovell/sharp/issues/338) [@lookfirst](https://github.com/lookfirst) * Emit post-processing 'info' event for Stream output. [#367](https://github.com/lovell/sharp/issues/367) [@salzhrani](https://github.com/salzhrani) * Ensure output image EXIF Orientation values are within 1-8 range. [#385](https://github.com/lovell/sharp/pull/385) [@jtobinisaniceguy](https://github.com/jtobinisaniceguy) * Ensure ratios are not swapped when rotating 90/270 and ignoring aspect. [#387](https://github.com/lovell/sharp/issues/387) [@kleisauke](https://github.com/kleisauke) * Remove deprecated style of calling extract API. Breaks calls using positional arguments. [#276](https://github.com/lovell/sharp/issues/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](https://github.com/lovell/sharp/issues/366) [@diegocsandrim](https://github.com/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](https://github.com/lovell/sharp/issues/110) [@bradisbell](https://github.com/bradisbell) * Add support for raw, uncompressed pixel Buffer/Stream input. [#220](https://github.com/lovell/sharp/issues/220) [@mikemorris](https://github.com/mikemorris) * Switch from libvips' C to C++ bindings, requires upgrade to v8.2.2. [#299](https://github.com/lovell/sharp/issues/299) * Control number of open files in libvips' cache; breaks existing `cache` behaviour. [#315](https://github.com/lovell/sharp/issues/315) [@impomezia](https://github.com/impomezia) * Ensure 16-bit input images can be normalised and embedded onto transparent backgrounds. [#339](https://github.com/lovell/sharp/issues/339) [#340](https://github.com/lovell/sharp/issues/340) [@janaz](https://github.com/janaz) * Ensure selected format takes precedence over any unknown output filename extension. [#344](https://github.com/lovell/sharp/issues/344) [@ubaltaci](https://github.com/ubaltaci) * Add support for libvips' PBM, PGM, PPM and FITS image format loaders. [#347](https://github.com/lovell/sharp/issues/347) [@oaleynik](https://github.com/oaleynik) * Ensure default crop gravity is center/centre. [#351](https://github.com/lovell/sharp/pull/351) [@joelmukuthu](https://github.com/joelmukuthu) * Improve support for musl libc systems e.g. Alpine Linux. [#354](https://github.com/lovell/sharp/issues/354) [#359](https://github.com/lovell/sharp/pull/359) [@download13](https://github.com/download13) [@wjordan](https://github.com/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](https://github.com/lovell/sharp/issues/325) [@janaz](https://github.com/janaz) * Allow compilation with gmake to provide FreeBSD support. [#326](https://github.com/lovell/sharp/issues/326) [@c0decafe](https://github.com/c0decafe) * Attempt to remove temporary file after installation. [#331](https://github.com/lovell/sharp/issues/331) [@dtoubelis](https://github.com/dtoubelis) ### v0.12.1 - 12th December 2015 * Allow use of SIMD vector instructions (via liborc) to be toggled on/off. [#172](https://github.com/lovell/sharp/issues/172) [@bkw](https://github.com/bkw) [@puzrin](https://github.com/puzrin) * Ensure embedded ICC profiles output with perceptual intent. [#321](https://github.com/lovell/sharp/issues/321) [@vlapo](https://github.com/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](https://github.com/lovell/sharp/issues/42) * Take advantage of libvips v8.1.0+ features. [#152](https://github.com/lovell/sharp/issues/152) * Add support for 64-bit Windows. Drop support for 32-bit Windows. [#224](https://github.com/lovell/sharp/issues/224) [@sabrehagen](https://github.com/sabrehagen) * Switch default interpolator to bicubic. [#289](https://github.com/lovell/sharp/issues/289) [@mahnunchik](https://github.com/mahnunchik) * Pre-extract rotatation should not swap width/height. [#296](https://github.com/lovell/sharp/issues/296) [@asilvas](https://github.com/asilvas) * Ensure 16-bit+alpha input images are (un)premultiplied correctly. [#301](https://github.com/lovell/sharp/issues/301) [@izaakschroeder](https://github.com/izaakschroeder) * Add `threshold` operation. [#303](https://github.com/lovell/sharp/pull/303) [@dacarley](https://github.com/dacarley) * Add `negate` operation. [#306](https://github.com/lovell/sharp/pull/306) [@dacarley](https://github.com/dacarley) * Support `options` Object with existing `extract` operation. [#309](https://github.com/lovell/sharp/pull/309) [@papandreou](https://github.com/papandreou) ## v0.11 - "*knife*" ### v0.11.4 - 5th November 2015 * Add corners, e.g. `northeast`, to existing `gravity` option. [#291](https://github.com/lovell/sharp/pull/291) [@brandonaaron](https://github.com/brandonaaron) * Ensure correct auto-rotation for EXIF Orientation values 2 and 4. [#288](https://github.com/lovell/sharp/pull/288) [@brandonaaron](https://github.com/brandonaaron) * Make static linking possible via `--runtime_link` install option. [#287](https://github.com/lovell/sharp/pull/287) [@vlapo](https://github.com/vlapo) ### v0.11.3 - 8th September 2015 * Intrepret blurSigma, sharpenFlat, and sharpenJagged as double precision. [#263](https://github.com/lovell/sharp/pull/263) [@chrisriley](https://github.com/chrisriley) ### v0.11.2 - 28th August 2015 * Allow crop gravity to be provided as a String. [#255](https://github.com/lovell/sharp/pull/255) [@papandreou](https://github.com/papandreou) * Add support for io.js v3 and Node v4. [#246](https://github.com/lovell/sharp/issues/246) ### v0.11.1 - 12th August 2015 * Silence MSVC warning: "C4530: C++ exception handler used, but unwind semantics are not enabled". [#244](https://github.com/lovell/sharp/pull/244) [@TheThing](https://github.com/TheThing) * Suppress gamma correction for input image with alpha transparency. [#249](https://github.com/lovell/sharp/issues/249) [@compeak](https://github.com/compeak) ### v0.11.0 - 15th July 2015 * Allow alpha transparency compositing via new `overlayWith` method. [#97](https://github.com/lovell/sharp/issues/97) [@gasi](https://github.com/gasi) * Expose raw ICC profile data as a Buffer when using `metadata`. [#129](https://github.com/lovell/sharp/issues/129) [@homerjam](https://github.com/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](https://github.com/lovell/sharp/issues/189) [@h2non](https://github.com/h2non) * Tighten constructor parameter checks. [#221](https://github.com/lovell/sharp/issues/221) [@mikemorris](https://github.com/mikemorris) * Allow one input Stream to be shared with two or more output Streams via new `clone` method. [#235](https://github.com/lovell/sharp/issues/235) [@jaubourg](https://github.com/jaubourg) * Use `round` instead of `floor` when auto-scaling dimensions to avoid floating-point rounding errors. [#238](https://github.com/lovell/sharp/issues/238) [@richardadjogah](https://github.com/richardadjogah) ## v0.10 - "*judgment*" ### v0.10.1 - 1st June 2015 * Allow embed of image with alpha transparency onto non-transparent background. [#204](https://github.com/lovell/sharp/issues/204) [@mikemliu](https://github.com/mikemliu) * Include C standard library for `atoi` as Xcode 6.3 appears to no longer do this. [#228](https://github.com/lovell/sharp/issues/228) [@doggan](https://github.com/doggan) ### v0.10.0 - 23rd April 2015 * Add support for Windows (x86). [#19](https://github.com/lovell/sharp/issues/19) [@DullReferenceException](https://github.com/DullReferenceException) [@itsananderson](https://github.com/itsananderson) * Add support for Openslide input and DeepZoom output. [#146](https://github.com/lovell/sharp/issues/146) [@mvictoras](https://github.com/mvictoras) * Allow arbitrary aspect ratios when resizing images via new `ignoreAspectRatio` method. [#192](https://github.com/lovell/sharp/issues/192) [@skedastik](https://github.com/skedastik) * Enhance output image contrast by stretching its luminance to cover the full dynamic range via new `normalize` method. [#194](https://github.com/lovell/sharp/issues/194) [@bkw](https://github.com/bkw) [@codingforce](https://github.com/codingforce)