Requires libvips v8.15.3
-
Upgrade to libvips v8.15.3 for upstream bug fixes.
-
Add
pageHeight
andpages
to response of multi-page output. #3411 -
Ensure option to force use of a globally-installed libvips works correctly. #4111 @project0
-
Minimise use of
engines
property to improve yarn v1 support. #4130 -
Ensure
sharp.format.heif
includes only AVIF when using prebuilt binaries. #4132 -
Add support to recomb operation for 4x4 matrices. #4147 @ton11797
-
Expose optional
precision
andminAmplitude
parameters ofblur
operation. #4168 #4172 @marcosc90 -
Ensure
keepIccProfile
avoids colour transformation where possible. #4186 -
TypeScript:
chromaSubsampling
metadata is optional. #4191 @DavidVaness
-
Remove experimental status from
pipelineColourspace
. -
Reduce default concurrency when musl thread over-subscription detected.
-
TypeScript: add missing definitions for
OverlayOptions
. #4048 @ike-gg -
Install: add advanced option to force use of a globally-installed libvips. #4060
-
Expose
bilinear
resizing kernel (and interpolator). #4061 -
Ensure
extend
operation stays sequential for multi-page TIFF (regression in 0.32.0). #4069 -
Tighten validation of constructor
text
integer properties. #4071 -
Simplify internal StaySequential logic. #4074 @kleisauke
-
Ensure negate operation occurs after profile conversion. #4096 @adriaanmeuris
-
Upgrade to libvips v8.15.2 for upstream bug fixes.
-
Ensure
keepIccProfile
retains P3 and CMYK input profiles. #3906 #4008 -
Ensure
text.wrap
property can acceptword-char
as value. #4028 @yolopunk -
Ensure
clone
takes a deep copy of existing options. #4029 -
Add
bitdepth
option toheif
output (prebuilt binaries support 8-bit only). #4036 @mertalev
-
Upgrade to libvips v8.15.1 for upstream bug fixes.
-
TypeScript: add definition for
keepMetadata
. #3914 @abhi0498 -
Ensure
extend
operation stays sequential when copying (regression in 0.32.0). #3928 -
Improve error handling for unsupported multi-page rotation. #3940
-
Add support for Yarn Plug'n'Play filesystem layout. #3888
-
Emit warning when attempting to use invalid ICC profiles. #3895
-
Ensure
VIPS_NOVECTOR
environment variable is respected. #3897 @icetee
-
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()
, usewithExif()
andwithIccProfile()
. -
Add experimental support for WebAssembly-based runtimes. @RReverser
-
Options for
trim
operation must be an Object, add newlineArt
option. #2363 -
Improve luminance of
tint
operation with weighting function. #3338 @jcupitt -
Ensure all
Error
objects contain astack
property. #3653 -
Make
compression
option ofheif
mandatory to help reduce HEIF vs HEIC confusion. #3740 -
Ensure correct interpretation of 16-bit raw input. #3808
-
Add support for
miniswhite
when using TIFF output. #3812 @dnsbty -
TypeScript: add missing definition for
withMetadata
boolean. #3823 @uhthomas -
Add more fine-grained control over output metadata. #3824
-
Ensure multi-page extract remains sequential. #3837
Requires libvips v8.14.5
-
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
-
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
-
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
-
Expose
preset
option for WebP output. #3639 -
Ensure decoding remains sequential for all operations (regression in 0.32.2). #3725
-
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
-
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
-
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
Requires libvips v8.13.3
-
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
-
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
-
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
-
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
Requires libvips v8.12.2
-
Ensure tiled composition always works with outside resizing. #3227
-
Allow WebP encoding effort of 0. #3261 @AlexanderTheGrey
-
Allow values for
limitInputPixels
larger than 32-bit. #3238 -
Ensure brew-installed
vips
can be detected (regression in 0.30.5). #3239
-
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
-
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
-
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
-
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
-
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
-
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
Requires libvips v8.11.3
-
Ensure correct dimensions when containing image resized to 1px. #2951
-
Impute TIFF
xres
/yres
fromdensity
provided towithMetadata
. #2952 @mbklein
-
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
-
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
-
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
Requires libvips v8.10.6
-
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
-
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
-
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
-
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
Requires libvips v8.10.5
-
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
-
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
-
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
Requires libvips v8.10.0
-
Add support for EXR input. Requires libvips compiled with OpenEXR. #698
-
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
-
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
Requires libvips v8.9.1
-
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
-
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
-
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
- Ensure prebuilt binaries are fetched based on N-API version. #2117
-
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
Requires libvips v8.9.0.
-
Prevent use of sequentialRead for EXIF-based rotate operation. #2042
-
Ensure RGBA LZW TIFF returns correct channel count. #2064
-
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
Requires libvips v8.8.1.
-
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
-
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
-
Add
background
option to tile output operation. #1924 @neave -
Add support for Node.js 13. #1932 @MayhemYDG
-
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.
-
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
Requires libvips v8.7.4.
-
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
-
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
Requires libvips v8.7.0.
-
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
-
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
-
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
-
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
Requires libvips v8.6.1.
-
Avoid race conditions when creating directories during installation. #1358 @ajhool
-
Accept floating point values for input density parameter. #1362 @aeirola
- Use copy+unlink if rename operation fails during installation. #1345
-
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.
- Expose libjpeg optimize_coding flag. #1265 @tomlokhorst
-
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
-
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
-
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
- Add support for prebuilt sharp binaries on common platforms. #186
Requires libvips v8.6.1.
-
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.
Requires libvips v8.5.5.
- Ensure input Buffer really is marked as Persistent, prevents mark-sweep GC. #950 @lfdoherty
-
Skip shrink-on-load when trimming. #888 @kleisauke
-
Migrate from got to simple-get for basic auth support. #945 @pbomb
-
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
-
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
Requires libvips v8.4.2.
-
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
-
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
-
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
-
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
Requires libvips v8.3.3
-
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
-
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
Requires libvips v8.3.1
-
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
-
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
Requires libvips v8.2.3
-
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
-
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
Requires libvips v8.2.2
- Fix embedding onto transparent backgrounds; regression introduced in v0.13.0. #366 @diegocsandrim
-
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.
Requires libvips v8.2.0
-
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
-
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.
-
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
-
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
- Intrepret blurSigma, sharpenFlat, and sharpenJagged as double precision. #263 @chrisriley
- Allow crop gravity to be provided as a String. #255 @papandreou
- Add support for io.js v3 and Node v4. #246
-
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
-
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
-
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
-
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