From 94607b585ad37f276267b0985fbd55817d530771 Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Tue, 19 Jun 2018 22:47:52 +0100 Subject: [PATCH] Ensure extractChannel sets bw colourspace interp #1257 --- docs/changelog.md | 4 ++++ src/pipeline.cc | 4 +++- test/fixtures/expected/extract-lch.jpg | Bin 0 -> 13010 bytes test/unit/extractChannel.js | 15 +++++++++++++++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/expected/extract-lch.jpg diff --git a/docs/changelog.md b/docs/changelog.md index 6f7f4af5..2d75a0c1 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -10,6 +10,10 @@ Requires libvips v8.6.1. [#1241](https://github.com/lovell/sharp/issues/1241) [@anahit42](https://github.com/anahit42) +* Ensure extractChannel sets correct single-channel colour space interpretation. + [#1257](https://github.com/lovell/sharp/issues/1257) + [@jeremychone](https://github.com/jeremychone) + #### v0.20.3 - 29th May 2018 * Fix tint operation by ensuring LAB interpretation and allowing negative values. diff --git a/src/pipeline.cc b/src/pipeline.cc index 0516557a..13b4501c 100644 --- a/src/pipeline.cc +++ b/src/pipeline.cc @@ -694,7 +694,9 @@ class PipelineWorker : public Nan::AsyncWorker { (baton->err).append("Cannot extract channel from image. Too few channels in image."); return Error(); } - image = image.extract_band(baton->extractChannel); + image = image + .extract_band(baton->extractChannel) + .copy(VImage::option()->set("interpretation", VIPS_INTERPRETATION_B_W)); } // Convert image to sRGB, if not already if (sharp::Is16Bit(image.interpretation())) { diff --git a/test/fixtures/expected/extract-lch.jpg b/test/fixtures/expected/extract-lch.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6840777a418b181b1a072cf9ac53246fca0e3ee9 GIT binary patch literal 13010 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 literal 0 HcmV?d00001 diff --git a/test/unit/extractChannel.js b/test/unit/extractChannel.js index a12fa708..2b599b7e 100644 --- a/test/unit/extractChannel.js +++ b/test/unit/extractChannel.js @@ -54,6 +54,21 @@ describe('Image channel extraction', function () { }); }); + it('With colorspace conversion', function (done) { + const output = fixtures.path('output.extract-lch.jpg'); + sharp(fixtures.inputJpg) + .toColourspace('lch') + .extractChannel(1) + .resize(320, 240) + .toFile(output, function (err, info) { + if (err) throw err; + assert.strictEqual(320, info.width); + assert.strictEqual(240, info.height); + fixtures.assertMaxColourDistance(output, fixtures.expected('extract-lch.jpg')); + done(); + }); + }); + it('Invalid channel number', function () { assert.throws(function () { sharp(fixtures.inputJpg)