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 {