Sharp: Enhancement: expose pngsave options requiring libimagequant

Created on 1 Dec 2018  路  4Comments  路  Source: lovell/sharp

https://libvips.github.io/libvips/API/current/VipsForeignSave.html#vips-pngsave

/*
 * @param {Boolean} [options.palette=false] - quantise to a palette-based image with alpha transparency support, requires libimagequant
 * @param {Number} [options.quality=100] - use the lowest number of colours needed to achieve given quality, requires libimagequant
 * @param {Number} [options.colours=256] - maximum number of palette entries, requires libimagequant
 * @param {Number} [options.colors=256] - alternative spelling of `options.colours`, requires libimagequant
 * @param {Number} [options.dither=1.0] - level of Floyd-Steinberg error diffusion, requires libimagequant
/

Please note that the pre-compiled binaries provided by sharp will not include libimagequant. If you require these possible future options then libvips will have to be compiled from source and globally installed.

enhancement ready-to-ship

Most helpful comment

For anyone looking for a precompiled version of this. I will try to maintain one that can be used just by setting an environment variable before doing an npm/yarn install.

Set ENV Variable SHARP_DIST_BASE_URL=https://github.com/avishnyak/sharp-libvips/releases/download/v8.7.4 (or newer version when they are released).

NOTE: This includes libimagequant which is GPL code and I'm only compiling for linux-x64 right now.

Other linux targets are probably simple to add if someone needs it (just open an issue).

All 4 comments

@lovell any plan to have libimagequant included in libvips/sharp by default in the near future?

libimagequant is GPL so you'll have to roll your own.

For anyone looking for a precompiled version of this. I will try to maintain one that can be used just by setting an environment variable before doing an npm/yarn install.

Set ENV Variable SHARP_DIST_BASE_URL=https://github.com/avishnyak/sharp-libvips/releases/download/v8.7.4 (or newer version when they are released).

NOTE: This includes libimagequant which is GPL code and I'm only compiling for linux-x64 right now.

Other linux targets are probably simple to add if someone needs it (just open an issue).

@lovell If licensing is a problem you could ask @kornelski about cross-licensing libimagequant to eg. LGPL or an exception for binary distribution in sharp.

Another solution could be to vendor https://github.com/exoticorn/exoquant in libvips and use it as a (slower) fallback, if libimagequant is missing. It would make the quality parameter useless though.

Was this page helpful?
0 / 5 - 0 ratings