From 740838b47c89137e52a64d3c1e9e5e448c009658 Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Sat, 8 Nov 2014 12:07:47 +0000 Subject: [PATCH] Prevent auto-rotate fail for libmagick formats #117 --- src/resize.cc | 5 ++++- test/unit/rotate.js | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/resize.cc b/src/resize.cc index 7b35e8e0..c4db61df 100755 --- a/src/resize.cc +++ b/src/resize.cc @@ -657,7 +657,10 @@ class ResizeWorker : public NanAsyncWorker { bool flip = FALSE; if (angle == -1) { const char *exif; - if (!vips_image_get_string(input, "exif-ifd0-Orientation", &exif)) { + if ( + vips_image_get_typeof(input, "exif-ifd0-Orientation") != 0 && + !vips_image_get_string(input, "exif-ifd0-Orientation", &exif) + ) { if (exif[0] == 0x36) { // "6" rotate = ANGLE_90; } else if (exif[0] == 0x33) { // "3" diff --git a/test/unit/rotate.js b/test/unit/rotate.js index ae1af86f..03413f67 100755 --- a/test/unit/rotate.js +++ b/test/unit/rotate.js @@ -68,6 +68,21 @@ describe('Rotation', function() { }); }); + it('Attempt to auto-rotate image format without EXIF support', function(done) { + sharp(fixtures.inputGif) + .rotate() + .resize(320) + .jpeg() + .toBuffer(function(err, data, info) { + if (err) throw err; + assert.strictEqual(true, data.length > 0); + assert.strictEqual('jpeg', info.format); + assert.strictEqual(320, info.width); + assert.strictEqual(213, info.height); + done(); + }); + }); + it('Rotate to an invalid angle, should fail', function(done) { var fail = false; try {