If you want to build sharp from source against a globally-installed libvips then you will now need to add both node-addon-api and node-gyp to the dependencies section of your package.json file. The binding.gyp file is "hidden" inside the src directory to prevent various build and package manager tooling from assuming that everyone is going to build from source every time.
69 KiB
Changelog
v0.33 - gauge
Requires libvips v8.14.5
v0.33.0 - TBD
-
Drop support for Node.js 14 and 16, now requires Node.js >= 18.17.0
-
Prebuilt binaries distributed via npm registry and installed via package manager.
-
Building from source requires dependency on
node-addon-api
. -
Remove
sharp.vendor
. -
Make
compression
option ofheif
mandatory to help reduce HEIF vs HEIC confusion. #3740 -
Ensure correct interpretation of 16-bit raw input. #3808
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
ofinside
respects 90/270 degree rotation. #3756 -
TypeScript: Ensure
minSize
property ofWebpOptions
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 withreuse
. -
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 to
extend
operation forextendWith
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
forlower
andupper
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
andinterPaletteMaxError
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 afterend
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
andmixed
options for greater control over animation frames. -
Remove previously-deprecated WebP
reductionEffort
and HEIFspeed
options. Useeffort
to control these. -
The
flip
andflop
operations will now occur before therotate
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 outputalias
toformat
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
andextend
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
-
Ensure tiled composition always works with outside resizing. #3227
-
Allow WebP encoding effort of 0. #3261 @AlexanderTheGrey
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
, deprecatefailOnError
(equivalent tofailOn: 'warning'
). -
Ensure
create
input image has correct bit depth and colour space. #3139 -
Add support for
TypedArray
input withbyteOffset
andlength
. #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
andy3
parameters ofsharpen
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
andtoFile
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, deprecatereductionEffort
. -
Standardise HEIF
effort
option name, deprecatespeed
. -
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
astiff
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
fromdensity
provided towithMetadata
. #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
-
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 tomodulate
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 whenextractChannel
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 setdensity
. #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 tojpeg
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
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 bybitdepth
to reduce to 1, 2 or 4 bit. -
JPEG output
quality
>= 90 no longer automatically setschromaSubsampling
to4:4:4
. -
Add most
dominant
colour to imagestats
. #640 -
Add support for animated GIF (requires *magick) and WebP output. #2012 @deftomat
-
Add support for libvips ImageMagick v7 loaders. #2258 @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. Exposelevels
metadata for multi-level images. #2222 -
Add support for named
alpha
channel toextractChannel
operation. #2138 -
Add experimental
sharpness
calculation tostats()
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.
-
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
andsequentialRead
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
andsequentialRead
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
andsequentialRead
to input options, deprecating functions of the same name. -
Expose
delay
andloop
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
-
Add
background
option to tile output operation. #1924 @neave -
Add support for Node.js 13. #1932 @MayhemYDG
v0.23.1 - 26th September 2019
-
Ensure
sharp.format.vips
is present and correct (filesystem only). #1813 -
Ensure invalid
width
andheight
provided as options toresize
throw. #1817 -
Allow use of 'heic' and 'heif' identifiers with
toFormat
. #1834 @jaubourg -
Add
premultiplied
option tocomposite
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
andreductionEffort
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
-
Add
modulate
operation for brightness, saturation and hue. #1601 @Goues -
Improve help messaging should
require("sharp")
fail. #1638 @sidharthachatterjee -
Add support for Node 12. #1668
v0.22.0 - 18th March 2019
-
Remove functions previously deprecated in v0.21.0:
background
,crop
,embed
,ignoreAspectRatio
,max
,min
andwithoutEnlargement
. -
Add
composite
operation supporting multiple images and blend modes; deprecateoverlayWith
. #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
andpageHeight
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 existingSHARP_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
andwithoutEnlargement
. Access to these is now via options passed to theresize
function. For example:embed('north')
is nowresize(width, height, { fit: 'contain', position: 'north' })
,crop('attention')
is nowresize(width, height, { fit: 'cover', position: 'attention' })
,max().withoutEnlargement()
is nowresize(width, height, { fit: 'inside', withoutEnlargement: true })
. #1135 -
Deprecate the
background
function. Per-operationbackground
options added toresize
,extend
andflatten
operations. #1392 -
Add
size
tometadata
response (Stream and Buffer input only). #695 -
Switch from custom trim operation to
vips_find_trim
. #914 -
Add
chromaSubsampling
andisProgressive
properties tometadata
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
-
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
- Expose libjpeg optimize_coding flag. #1265 @tomlokhorst
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
v0.20.2 - 28th April 2018
-
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
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
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
-
Skip shrink-on-load when trimming. #888 @kleisauke
-
Migrate from got to simple-get for basic auth support. #945 @pbomb
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
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 nowjpeg({quality: n})
and/orwebp({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
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
-
Allow removal of limitation on input pixel count via limitInputPixels. Use with care. #250 #316 @anandthakker @kentongray
-
Use final output image for metadata passed to callback. #399 @salzhrani
-
Add support for writing tiled images to a zip container. #402 @felixbuenemann
-
Improve Electron compatibility by allowing node-gyp rebuilds without npm. #412 @nouh
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
-
Support
options
Object with existingextract
operation. #309 @papandreou
v0.11 - "knife"
v0.11.4 - 5th November 2015
-
Add corners, e.g.
northeast
, to existinggravity
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 EXIFOrientation
tag, which if present is now removed when usingrotate
,flip
orflop
. #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 offloor
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
-
Add support for Windows (x86). #19 @DullReferenceException @itsananderson
-
Add support for Openslide input and DeepZoom output. #146 @mvictoras
-
Allow arbitrary aspect ratios when resizing images via new
ignoreAspectRatio
method. #192 @skedastik -
Enhance output image contrast by stretching its luminance to cover the full dynamic range via new
normalize
method. #194 @bkw @codingforce