Changelog

v0.18 - "ridge"

Requires libvips v8.5.5.

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