From 99810c03116f9951faf8b40fe0f8a02c55ce8b02 Mon Sep 17 00:00:00 2001 From: Nicolas Coden Date: Mon, 22 May 2017 12:08:33 +0200 Subject: [PATCH] Add support for any rotation angle (#791) Allow to provide any positive or negative multiple of 90 to `.rotate(...)`. Negative angles and angles above 360 are converted to valid 0/90/180/270 rotations (0 rotations are still ignored). Changes: - [Node] Add `useExifOrientation` internal variable to know if the Exif orientation must be used instead of the provided angle. This allows to save a negative angle in the `angle` option, because the `-1` special case is not needed. - [Node] Change check for planed-rotation in extract, to prepare a rotation before extraction: check with both `angle` and `useExifOrientation` options. I think this check contains a bit too much logics on rotation options. Maybe we could move this condition to a dedicated function. - [C++] Separate `CalculateRotationAndFlip` into two generic functions: - `CalculateExifRotationAndFlip`: Calculate the angle of rotation and need-to-flip for the given Exif orientation. - `CalculateAngleRotation`: Calculate the rotation for the given angle. One or the other function is used to calculate the rotation, depending on wether the Exif orientation tag or the provided angle must be used. - Add unit tests for `-3690`, `-450`, `-90`, `90`, `450`, `3690` and `-3780`, `-540`, `0`, `180`, `540`, `3780` rotations - Add `320x240` fixture image for tests. Unrelated changes (squashed): - Add ncoden to the list of contributors --- lib/constructor.js | 1 + lib/operation.js | 15 +++++---- package.json | 3 +- src/pipeline.cc | 69 +++++++++++++++++++------------------- src/pipeline.h | 2 ++ test/fixtures/320x240.jpg | Bin 0 -> 81198 bytes test/fixtures/index.js | 1 + test/unit/rotate.js | 22 ++++++++++++ 8 files changed, 72 insertions(+), 41 deletions(-) create mode 100644 test/fixtures/320x240.jpg diff --git a/lib/constructor.js b/lib/constructor.js index 76ea64ea..32596649 100644 --- a/lib/constructor.js +++ b/lib/constructor.js @@ -117,6 +117,7 @@ const Sharp = function (input, options) { height: -1, canvas: 'crop', crop: 0, + useExifOrientation: false, angle: 0, rotateBeforePreExtract: false, flip: false, diff --git a/lib/operation.js b/lib/operation.js index 6297d0d7..c0b19539 100644 --- a/lib/operation.js +++ b/lib/operation.js @@ -6,7 +6,10 @@ const is = require('./is'); * Rotate the output image by either an explicit angle * or auto-orient based on the EXIF `Orientation` tag. * - * Use this method without angle to determine the angle from EXIF data. + * If an angle is provided, it is converted to a valid 90/180/270deg rotation. + * For example, `-450` will produce a 270deg rotation. + * + * If no angle is provided, it is determined the from EXIF data. * Mirroring is supported and may infer the use of a flip operation. * * The use of `rotate` implies the removal of the EXIF `Orientation` tag, if any. @@ -25,17 +28,17 @@ const is = require('./is'); * }); * readableStream.pipe(pipeline); * - * @param {Number} [angle=auto] 0, 90, 180 or 270. + * @param {Number} [angle=auto] angle of rotation, must be a multiple of 90. * @returns {Sharp} * @throws {Error} Invalid parameters */ function rotate (angle) { if (!is.defined(angle)) { - this.options.angle = -1; - } else if (is.integer(angle) && is.inArray(angle, [0, 90, 180, 270])) { + this.options.useExifOrientation = true; + } else if (is.integer(angle) && !(angle % 90)) { this.options.angle = angle; } else { - throw new Error('Unsupported angle (0, 90, 180, 270) ' + angle); + throw new Error('Unsupported angle: angle must be a positive/negative multiple of 90 ' + angle); } return this; } @@ -81,7 +84,7 @@ function extract (options) { } }, this); // Ensure existing rotation occurs before pre-resize extraction - if (suffix === 'Pre' && this.options.angle !== 0) { + if (suffix === 'Pre' && ((this.options.angle % 360) !== 0 || this.options.useExifOrientation === true)) { this.options.rotateBeforePreExtract = true; } return this; diff --git a/package.json b/package.json index df99219c..a984a89e 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,8 @@ "Alice Monday ", "Kristo Jorgenson ", "YvesBos ", - "Guy Maliar " + "Guy Maliar ", + "Nicolas Coden " ], "scripts": { "clean": "rm -rf node_modules/ build/ vendor/ coverage/ test/fixtures/output.*", diff --git a/src/pipeline.cc b/src/pipeline.cc index 9ce53379..3739df42 100644 --- a/src/pipeline.cc +++ b/src/pipeline.cc @@ -81,16 +81,12 @@ class PipelineWorker : public Nan::AsyncWorker { // Calculate angle of rotation VipsAngle rotation; - bool flip; - bool flop; - std::tie(rotation, flip, flop) = CalculateRotationAndFlip(baton->angle, image); - if (flip && !baton->flip) { - // Add flip operation due to EXIF mirroring - baton->flip = TRUE; - } - if (flop && !baton->flop) { - // Add flip operation due to EXIF mirroring - baton->flop = TRUE; + if (baton->useExifOrientation) { + // Rotate and flip image according to Exif orientation + // (ignore the requested rotation and flip) + std::tie(rotation, baton->flip, baton->flop) = CalculateExifRotationAndFlip(sharp::ExifOrientation(image)); + } else { + rotation = CalculateAngleRotation(baton->angle); } // Rotate pre-extract @@ -1065,39 +1061,43 @@ class PipelineWorker : public Nan::AsyncWorker { std::vector> buffersToPersist; /* - Calculate the angle of rotation and need-to-flip for the output image. - In order of priority: - 1. Use explicitly requested angle (supports 90, 180, 270) - 2. Use input image EXIF Orientation header - supports mirroring - 3. Otherwise default to zero, i.e. no rotation + Calculate the angle of rotation and need-to-flip for the given Exif orientation + By default, returns zero, i.e. no rotation. */ std::tuple - CalculateRotationAndFlip(int const angle, vips::VImage image) { + CalculateExifRotationAndFlip(int const exifOrientation) { VipsAngle rotate = VIPS_ANGLE_D0; bool flip = FALSE; bool flop = FALSE; - if (angle == -1) { - switch (sharp::ExifOrientation(image)) { - case 6: rotate = VIPS_ANGLE_D90; break; - case 3: rotate = VIPS_ANGLE_D180; break; - case 8: rotate = VIPS_ANGLE_D270; break; - case 2: flop = TRUE; break; // flop 1 - case 7: flip = TRUE; rotate = VIPS_ANGLE_D90; break; // flip 6 - case 4: flop = TRUE; rotate = VIPS_ANGLE_D180; break; // flop 3 - case 5: flip = TRUE; rotate = VIPS_ANGLE_D270; break; // flip 8 - } - } else { - if (angle == 90) { - rotate = VIPS_ANGLE_D90; - } else if (angle == 180) { - rotate = VIPS_ANGLE_D180; - } else if (angle == 270) { - rotate = VIPS_ANGLE_D270; - } + switch (exifOrientation) { + case 6: rotate = VIPS_ANGLE_D90; break; + case 3: rotate = VIPS_ANGLE_D180; break; + case 8: rotate = VIPS_ANGLE_D270; break; + case 2: flop = TRUE; break; // flop 1 + case 7: flip = TRUE; rotate = VIPS_ANGLE_D90; break; // flip 6 + case 4: flop = TRUE; rotate = VIPS_ANGLE_D180; break; // flop 3 + case 5: flip = TRUE; rotate = VIPS_ANGLE_D270; break; // flip 8 } return std::make_tuple(rotate, flip, flop); } + /* + Calculate the rotation for the given angle. + Supports any positive or negative angle that is a multiple of 90. + */ + VipsAngle + CalculateAngleRotation(int angle) { + angle = angle % 360; + if (angle < 0) + angle = 360 + angle; + switch (angle) { + case 90: return VIPS_ANGLE_D90; + case 180: return VIPS_ANGLE_D180; + case 270: return VIPS_ANGLE_D270; + } + return VIPS_ANGLE_D0; + } + /* Assemble the suffix argument to dzsave, which is the format (by extname) alongisde comma-separated arguments to the corresponding `formatsave` vips @@ -1222,6 +1222,7 @@ NAN_METHOD(pipeline) { baton->gamma = AttrTo(options, "gamma"); baton->greyscale = AttrTo(options, "greyscale"); baton->normalise = AttrTo(options, "normalise"); + baton->useExifOrientation = AttrTo(options, "useExifOrientation"); baton->angle = AttrTo(options, "angle"); baton->rotateBeforePreExtract = AttrTo(options, "rotateBeforePreExtract"); baton->flip = AttrTo(options, "flip"); diff --git a/src/pipeline.h b/src/pipeline.h index da3be3d9..47e828e6 100644 --- a/src/pipeline.h +++ b/src/pipeline.h @@ -81,6 +81,7 @@ struct PipelineBaton { double gamma; bool greyscale; bool normalise; + bool useExifOrientation; int angle; bool rotateBeforePreExtract; bool flip; @@ -158,6 +159,7 @@ struct PipelineBaton { gamma(0.0), greyscale(false), normalise(false), + useExifOrientation(false), angle(0), flip(false), flop(false), diff --git a/test/fixtures/320x240.jpg b/test/fixtures/320x240.jpg new file mode 100644 index 0000000000000000000000000000000000000000..338a76e0abb6af623c96fbfde9877b12a9c8c487 GIT binary patch literal 81198 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

wuF)^#Knm`5qu11_ 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 C?|LQx literal 0 HcmV?d00001 diff --git a/test/fixtures/index.js b/test/fixtures/index.js index 5c092be0..d45d8a97 100644 --- a/test/fixtures/index.js +++ b/test/fixtures/index.js @@ -64,6 +64,7 @@ module.exports = { inputJpgWithCorruptHeader: getPath('corrupt-header.jpg'), inputJpgWithLowContrast: getPath('low-contrast.jpg'), // http://www.flickr.com/photos/grizdave/2569067123/ inputJpgLarge: getPath('giant-image.jpg'), + inputJpg320x240: getPath('320x240.jpg'), // http://www.andrewault.net/2010/01/26/create-a-test-pattern-video-with-perl/ inputPng: getPath('50020484-00001.png'), // http://c.searspartsdirect.com/lis_png/PLDM/50020484-00001.png inputPngWithTransparency: getPath('blackbug.png'), // public domain diff --git a/test/unit/rotate.js b/test/unit/rotate.js index 13502940..f3f38a75 100644 --- a/test/unit/rotate.js +++ b/test/unit/rotate.js @@ -34,6 +34,28 @@ describe('Rotation', function () { }); }); + [-3690, -450, -90, 90, 450, 3690].forEach(function (angle) { + it('Rotate by any 90-multiple angle (' + angle + 'deg)', function (done) { + sharp(fixtures.inputJpg320x240).rotate(angle).toBuffer(function (err, data, info) { + if (err) throw err; + assert.strictEqual(240, info.width); + assert.strictEqual(320, info.height); + done(); + }); + }); + }); + + [-3780, -540, 0, 180, 540, 3780].forEach(function (angle) { + it('Rotate by any 180-multiple angle (' + angle + 'deg)', function (done) { + sharp(fixtures.inputJpg320x240).rotate(angle).toBuffer(function (err, data, info) { + if (err) throw err; + assert.strictEqual(320, info.width); + assert.strictEqual(240, info.height); + done(); + }); + }); + }); + it('Rotate by 270 degrees, square output ignoring aspect ratio', function (done) { sharp(fixtures.inputJpg) .resize(240, 240)