mirror of
https://github.com/lovell/sharp.git
synced 2026-02-04 05:36:18 +01:00
Ensure TIFF output bitdepth option is limited to 1, 2 or 4
This commit is contained in:
@@ -717,7 +717,7 @@ instead of providing `xres` and `yres` in pixels/mm.
|
|||||||
| [options.xres] | <code>number</code> | <code>1.0</code> | horizontal resolution in pixels/mm |
|
| [options.xres] | <code>number</code> | <code>1.0</code> | horizontal resolution in pixels/mm |
|
||||||
| [options.yres] | <code>number</code> | <code>1.0</code> | vertical resolution in pixels/mm |
|
| [options.yres] | <code>number</code> | <code>1.0</code> | vertical resolution in pixels/mm |
|
||||||
| [options.resolutionUnit] | <code>string</code> | <code>"'inch'"</code> | resolution unit options: inch, cm |
|
| [options.resolutionUnit] | <code>string</code> | <code>"'inch'"</code> | resolution unit options: inch, cm |
|
||||||
| [options.bitdepth] | <code>number</code> | <code>8</code> | reduce bitdepth to 1, 2 or 4 bit |
|
| [options.bitdepth] | <code>number</code> | <code>0</code> | reduce bitdepth to 1, 2 or 4 bit |
|
||||||
| [options.miniswhite] | <code>boolean</code> | <code>false</code> | write 1-bit images as miniswhite |
|
| [options.miniswhite] | <code>boolean</code> | <code>false</code> | write 1-bit images as miniswhite |
|
||||||
|
|
||||||
**Example**
|
**Example**
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ slug: changelog/v0.35.0
|
|||||||
|
|
||||||
* Upgrade to libvips v8.18.0 for upstream bug fixes.
|
* Upgrade to libvips v8.18.0 for upstream bug fixes.
|
||||||
|
|
||||||
|
* Ensure TIFF output `bitdepth` option is limited to 1, 2 or 4.
|
||||||
|
|
||||||
* Deprecate Windows 32-bit (win32-ia32) prebuilt binaries.
|
* Deprecate Windows 32-bit (win32-ia32) prebuilt binaries.
|
||||||
|
|
||||||
* Add AVIF/HEIF `tune` option for control over quality metrics.
|
* Add AVIF/HEIF `tune` option for control over quality metrics.
|
||||||
|
|||||||
@@ -366,7 +366,7 @@ const Sharp = function (input, options) {
|
|||||||
tiffPredictor: 'horizontal',
|
tiffPredictor: 'horizontal',
|
||||||
tiffPyramid: false,
|
tiffPyramid: false,
|
||||||
tiffMiniswhite: false,
|
tiffMiniswhite: false,
|
||||||
tiffBitdepth: 8,
|
tiffBitdepth: 0,
|
||||||
tiffTile: false,
|
tiffTile: false,
|
||||||
tiffTileHeight: 256,
|
tiffTileHeight: 256,
|
||||||
tiffTileWidth: 256,
|
tiffTileWidth: 256,
|
||||||
|
|||||||
4
lib/index.d.ts
vendored
4
lib/index.d.ts
vendored
@@ -1479,8 +1479,8 @@ declare namespace sharp {
|
|||||||
xres?: number | undefined;
|
xres?: number | undefined;
|
||||||
/** Vertical resolution in pixels/mm (optional, default 1.0) */
|
/** Vertical resolution in pixels/mm (optional, default 1.0) */
|
||||||
yres?: number | undefined;
|
yres?: number | undefined;
|
||||||
/** Reduce bitdepth to 1, 2 or 4 bit (optional, default 8) */
|
/** Reduce bitdepth to 1, 2 or 4 bit (optional) */
|
||||||
bitdepth?: 1 | 2 | 4 | 8 | undefined;
|
bitdepth?: 1 | 2 | 4 | undefined;
|
||||||
/** Write 1-bit images as miniswhite (optional, default false) */
|
/** Write 1-bit images as miniswhite (optional, default false) */
|
||||||
miniswhite?: boolean | undefined;
|
miniswhite?: boolean | undefined;
|
||||||
/** Resolution unit options: inch, cm (optional, default 'inch') */
|
/** Resolution unit options: inch, cm (optional, default 'inch') */
|
||||||
|
|||||||
@@ -1055,7 +1055,7 @@ function trySetAnimationOptions (source, target) {
|
|||||||
* @param {number} [options.xres=1.0] - horizontal resolution in pixels/mm
|
* @param {number} [options.xres=1.0] - horizontal resolution in pixels/mm
|
||||||
* @param {number} [options.yres=1.0] - vertical resolution in pixels/mm
|
* @param {number} [options.yres=1.0] - vertical resolution in pixels/mm
|
||||||
* @param {string} [options.resolutionUnit='inch'] - resolution unit options: inch, cm
|
* @param {string} [options.resolutionUnit='inch'] - resolution unit options: inch, cm
|
||||||
* @param {number} [options.bitdepth=8] - reduce bitdepth to 1, 2 or 4 bit
|
* @param {number} [options.bitdepth=0] - reduce bitdepth to 1, 2 or 4 bit
|
||||||
* @param {boolean} [options.miniswhite=false] - write 1-bit images as miniswhite
|
* @param {boolean} [options.miniswhite=false] - write 1-bit images as miniswhite
|
||||||
* @returns {Sharp}
|
* @returns {Sharp}
|
||||||
* @throws {Error} Invalid options
|
* @throws {Error} Invalid options
|
||||||
@@ -1070,10 +1070,10 @@ function tiff (options) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (is.defined(options.bitdepth)) {
|
if (is.defined(options.bitdepth)) {
|
||||||
if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [1, 2, 4, 8])) {
|
if (is.integer(options.bitdepth) && is.inArray(options.bitdepth, [1, 2, 4])) {
|
||||||
this.options.tiffBitdepth = options.bitdepth;
|
this.options.tiffBitdepth = options.bitdepth;
|
||||||
} else {
|
} else {
|
||||||
throw is.invalidParameterError('bitdepth', '1, 2, 4 or 8', options.bitdepth);
|
throw is.invalidParameterError('bitdepth', '1, 2 or 4', options.bitdepth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// tiling
|
// tiling
|
||||||
|
|||||||
@@ -365,7 +365,7 @@ struct PipelineBaton {
|
|||||||
tiffBigtiff(false),
|
tiffBigtiff(false),
|
||||||
tiffPredictor(VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL),
|
tiffPredictor(VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL),
|
||||||
tiffPyramid(false),
|
tiffPyramid(false),
|
||||||
tiffBitdepth(8),
|
tiffBitdepth(0),
|
||||||
tiffMiniswhite(false),
|
tiffMiniswhite(false),
|
||||||
tiffTile(false),
|
tiffTile(false),
|
||||||
tiffTileHeight(256),
|
tiffTileHeight(256),
|
||||||
|
|||||||
@@ -122,7 +122,6 @@ describe('TIFF', () => {
|
|||||||
sharp(fixtures.inputTiff8BitDepth)
|
sharp(fixtures.inputTiff8BitDepth)
|
||||||
.toColourspace('b-w') // can only squash 1 band uchar images
|
.toColourspace('b-w') // can only squash 1 band uchar images
|
||||||
.tiff({
|
.tiff({
|
||||||
bitdepth: 8,
|
|
||||||
compression: 'none',
|
compression: 'none',
|
||||||
predictor: 'none'
|
predictor: 'none'
|
||||||
})
|
})
|
||||||
@@ -154,7 +153,7 @@ describe('TIFF', () => {
|
|||||||
it('Invalid TIFF bitdepth value throws error', () => {
|
it('Invalid TIFF bitdepth value throws error', () => {
|
||||||
assert.throws(() => {
|
assert.throws(() => {
|
||||||
sharp().tiff({ bitdepth: 3 });
|
sharp().tiff({ bitdepth: 3 });
|
||||||
}, /Error: Expected 1, 2, 4 or 8 for bitdepth but received 3 of type number/);
|
}, /Error: Expected 1, 2 or 4 for bitdepth but received 3 of type number/);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('TIFF setting xres and yres on file', () =>
|
it('TIFF setting xres and yres on file', () =>
|
||||||
|
|||||||
Reference in New Issue
Block a user