Make heif compression option mandatory #3740

This commit is contained in:
Lovell Fuller
2023-09-27 11:55:42 +01:00
parent 36feb7551b
commit 3043e01171
7 changed files with 28 additions and 45 deletions

1
lib/index.d.ts vendored
View File

@@ -699,7 +699,6 @@ declare namespace sharp {
/**
* Use these AVIF options for output image.
* Whilst it is possible to create AVIF images smaller than 16x16 pixels, most web browsers do not display these properly.
* @param options Output options.
* @throws {Error} Invalid options
* @returns A sharp instance that can be used to chain operations

View File

@@ -867,9 +867,6 @@ function tiff (options) {
/**
* Use these AVIF options for output image.
*
* Whilst it is possible to create AVIF images smaller than 16x16 pixels,
* most web browsers do not display these properly.
*
* AVIF image sequences are not supported.
*
* @example
@@ -909,9 +906,9 @@ function avif (options) {
*
* @since 0.23.0
*
* @param {Object} [options] - output options
* @param {Object} options - output options
* @param {string} options.compression - compression format: av1, hevc
* @param {number} [options.quality=50] - quality, integer 1-100
* @param {string} [options.compression='av1'] - compression format: av1, hevc
* @param {boolean} [options.lossless=false] - use lossless compression
* @param {number} [options.effort=4] - CPU effort, between 0 (fastest) and 9 (slowest)
* @param {string} [options.chromaSubsampling='4:4:4'] - set to '4:2:0' to use chroma subsampling
@@ -920,6 +917,11 @@ function avif (options) {
*/
function heif (options) {
if (is.object(options)) {
if (is.string(options.compression) && is.inArray(options.compression, ['av1', 'hevc'])) {
this.options.heifCompression = options.compression;
} else {
throw is.invalidParameterError('compression', 'one of: av1, hevc', options.compression);
}
if (is.defined(options.quality)) {
if (is.integer(options.quality) && is.inRange(options.quality, 1, 100)) {
this.options.heifQuality = options.quality;
@@ -934,13 +936,6 @@ function heif (options) {
throw is.invalidParameterError('lossless', 'boolean', options.lossless);
}
}
if (is.defined(options.compression)) {
if (is.string(options.compression) && is.inArray(options.compression, ['av1', 'hevc'])) {
this.options.heifCompression = options.compression;
} else {
throw is.invalidParameterError('compression', 'one of: av1, hevc', options.compression);
}
}
if (is.defined(options.effort)) {
if (is.integer(options.effort) && is.inRange(options.effort, 0, 9)) {
this.options.heifEffort = options.effort;
@@ -955,6 +950,8 @@ function heif (options) {
throw is.invalidParameterError('chromaSubsampling', 'one of: 4:2:0, 4:4:4', options.chromaSubsampling);
}
}
} else {
throw is.invalidParameterError('options', 'Object', options);
}
return this._updateFormatOut('heif', options);
}