From d17e8d3450af1198f4e4e3d5d9837f35a6898ea3 Mon Sep 17 00:00:00 2001 From: Matt Hirsch Date: Mon, 11 Jul 2016 04:51:43 -0400 Subject: [PATCH] Add boolean feature for bitwise image operations (#501) --- docs/api.md | 15 +++ index.js | 27 +++++ src/common.cc | 9 ++ src/common.h | 5 + src/operations.cc | 7 ++ src/operations.h | 5 + src/pipeline.cc | 99 +++++++++++++---- src/pipeline.h | 6 + test/fixtures/booleanTest.jpg | Bin 0 -> 11428 bytes test/fixtures/expected/boolean_and_result.jpg | Bin 0 -> 14543 bytes test/fixtures/expected/boolean_eor_result.jpg | Bin 0 -> 23154 bytes test/fixtures/expected/boolean_or_result.jpg | Bin 0 -> 17209 bytes test/fixtures/index.js | 2 + test/unit/boolean.js | 103 ++++++++++++++++++ 14 files changed, 256 insertions(+), 22 deletions(-) create mode 100644 test/fixtures/booleanTest.jpg create mode 100644 test/fixtures/expected/boolean_and_result.jpg create mode 100644 test/fixtures/expected/boolean_eor_result.jpg create mode 100644 test/fixtures/expected/boolean_or_result.jpg create mode 100644 test/unit/boolean.js diff --git a/docs/api.md b/docs/api.md index 193e412c..5bcded52 100644 --- a/docs/api.md +++ b/docs/api.md @@ -519,6 +519,21 @@ sharp('input.png') ``` In the above example if `input.png` is a 3 channel RGB image, `output.png` will be a 1 channel grayscale image where each pixel `P = R & G & B`. For example, if `I(1,1) = [247, 170, 14] = [0b11110111, 0b10101010, 0b00001111]` then `O(1,1) = 0b11110111 & 0b10101010 & 0b00001111 = 0b00000010 = 2`. + +#### boolean(image, operation) + +Perform a bitwise boolean operation with `image`. + +`image` is one of the following. + +* Buffer contianing PNG, WebP, GIF or SVG image data, or +* String containing the path to an image file + +This operation creates an output image where each pixel is the result of the selected bitwise boolean `operation`, between the corresponding pixels of the input images. The boolean operation can be one of the following: + + * `and` performs a bitwise and operation, like the c-operator `&` + * `or` performs a bitwise or operation, like the c-operator `|` + * `eor` performs a bitwise exclusive or operation, like the c-operator `^` ### Output diff --git a/index.js b/index.js index 937d3ba3..52df60ce 100644 --- a/index.js +++ b/index.js @@ -91,6 +91,9 @@ var Sharp = function(input, options) { greyscale: false, normalize: 0, bandBoolOp: null, + booleanOp: null, + booleanBufferIn: null, + booleanFileIn: '', // overlay overlayFileIn: '', overlayBufferIn: null, @@ -365,6 +368,30 @@ Sharp.prototype.negate = function(negate) { return this; }; +/* + Bitwise boolean operations between images +*/ +Sharp.prototype.boolean = function(operand, operator) { + if (isString(operand)) { + this.options.booleanFileIn = operand; + } else if (isBuffer(operand)) { + this.options.booleanBufferIn = operand; + } else { + throw new Error('Unsupported boolean operand ' + typeof operand); + } + if (!isString(operator)) { + throw new Error('Invalid boolean operation ' + operator); + } + operator = operator.toLowerCase(); + var ops = ['and', 'or', 'eor']; + if(ops.indexOf(operator) == -1) { + throw new Error('Invalid boolean operation ' + operator); + } + this.options.booleanOp = operator; + + return this; +}; + /* Overlay with another image, using an optional gravity */ diff --git a/src/common.cc b/src/common.cc index 1045c39e..ae0de8cb 100644 --- a/src/common.cc +++ b/src/common.cc @@ -330,4 +330,13 @@ namespace sharp { } } + /* + Get VIPS Boolean operatoin type from string + */ + VipsOperationBoolean GetBooleanOperation(std::string opStr) { + return static_cast( + vips_enum_from_nick(nullptr, VIPS_TYPE_OPERATION_BOOLEAN, opStr.data()) + ); + } + } // namespace sharp diff --git a/src/common.h b/src/common.h index 511fc804..e2774291 100644 --- a/src/common.h +++ b/src/common.h @@ -123,6 +123,11 @@ namespace sharp { */ int MaximumImageAlpha(VipsInterpretation interpretation); + /* + Get VIPS Boolean operatoin type from string + */ + VipsOperationBoolean GetBooleanOperation(std::string opStr); + } // namespace sharp diff --git a/src/operations.cc b/src/operations.cc index 58adba1b..8c7987c4 100644 --- a/src/operations.cc +++ b/src/operations.cc @@ -399,6 +399,13 @@ namespace sharp { return image.bandbool(boolean); } + /* + Perform bitwise boolean operation between images + */ + VImage Boolean(VImage image, VImage imageR, VipsOperationBoolean const boolean) { + return image.boolean(imageR, boolean); + } + VImage Trim(VImage image, int const tolerance) { using sharp::MaximumImageAlpha; // An equivalent of ImageMagick's -trim in C++ ... automatically remove diff --git a/src/operations.h b/src/operations.h index 41a8d0f9..8f3cd9f3 100644 --- a/src/operations.h +++ b/src/operations.h @@ -87,6 +87,11 @@ namespace sharp { */ VImage Bandbool(VImage image, VipsOperationBoolean const boolean); + /* + Perform bitwise boolean operation between images + */ + VImage Boolean(VImage image, VImage imageR, VipsOperationBoolean const boolean); + /* Trim an image */ diff --git a/src/pipeline.cc b/src/pipeline.cc index 99ef7a10..64c8f4d7 100644 --- a/src/pipeline.cc +++ b/src/pipeline.cc @@ -9,6 +9,9 @@ #include #include +#include +#include + #include "nan.h" #include "common.h" @@ -56,6 +59,7 @@ using sharp::EntropyCrop; using sharp::TileCache; using sharp::Threshold; using sharp::Bandbool; +using sharp::Boolean; using sharp::Trim; using sharp::ImageType; @@ -78,19 +82,22 @@ using sharp::FreeCallback; using sharp::CalculateCrop; using sharp::counterProcess; using sharp::counterQueue; +using sharp::GetBooleanOperation; + +typedef struct BufferContainer_t { + std::string name; + Local nodeBuf; +} BufferContainer; class PipelineWorker : public AsyncWorker { public: PipelineWorker(Callback *callback, PipelineBaton *baton, Callback *queueListener, - const Local &bufferIn, const Local &overlayBufferIn) : - AsyncWorker(callback), baton(baton), queueListener(queueListener) { - if (baton->bufferInLength > 0) { - SaveToPersistent("bufferIn", bufferIn); - } - if (baton->overlayBufferInLength > 0) { - SaveToPersistent("overlayBufferIn", overlayBufferIn); - } + const std::vector saveBuffers) : + AsyncWorker(callback), baton(baton), queueListener(queueListener), saveBuffers(saveBuffers) { + for (const BufferContainer buf : saveBuffers) { + SaveToPersistent(buf.name.c_str(), buf.nodeBuf); } + } ~PipelineWorker() {} /* @@ -784,6 +791,44 @@ class PipelineWorker : public AsyncWorker { } } + // Apply bitwise boolean operation between images + if (baton->booleanOp != VIPS_OPERATION_BOOLEAN_LAST && + (baton->booleanBufferInLength > 0 || !baton->booleanFileIn.empty())) { + VImage booleanImage; + ImageType booleanImageType = ImageType::UNKNOWN; + if (baton->booleanBufferInLength > 0) { + // Buffer input for boolean operation + booleanImageType = DetermineImageType(baton->booleanBufferIn, baton->booleanBufferInLength); + if (booleanImageType != ImageType::UNKNOWN) { + try { + booleanImage = VImage::new_from_buffer(baton->booleanBufferIn, baton->booleanBufferInLength, + nullptr, VImage::option()->set("access", baton->accessMethod)); + } catch (...) { + (baton->err).append("Boolean operation buffer has corrupt header"); + booleanImageType = ImageType::UNKNOWN; + } + } else { + (baton->err).append("Boolean operation buffer contains unsupported image format"); + } + } else if (!baton->booleanFileIn.empty()) { + // File input for boolean operation + booleanImageType = DetermineImageType(baton->booleanFileIn.data()); + if (booleanImageType != ImageType::UNKNOWN) { + try { + booleanImage = VImage::new_from_file(baton->booleanFileIn.data(), + VImage::option()->set("access", baton->accessMethod)); + } catch (...) { + (baton->err).append("Boolean operation file has corrupt header"); + } + } + } + if (booleanImageType == ImageType::UNKNOWN) { + return Error(); + } + // Apply the boolean operation + image = Boolean(image, booleanImage, baton->booleanOp); + } + // Apply per-channel Bandbool bitwise operations after all other operations if (shouldBandbool) { image = Bandbool(image, baton->bandBoolOp); @@ -1007,11 +1052,8 @@ class PipelineWorker : public AsyncWorker { } // Dispose of Persistent wrapper around input Buffers so they can be garbage collected - if (baton->bufferInLength > 0) { - GetFromPersistent("bufferIn"); - } - if (baton->overlayBufferInLength > 0) { - GetFromPersistent("overlayBufferIn"); + for (const BufferContainer buf : saveBuffers) { + GetFromPersistent(buf.name.c_str()); } delete baton; @@ -1028,6 +1070,7 @@ class PipelineWorker : public AsyncWorker { private: PipelineBaton *baton; Callback *queueListener; + std::vector saveBuffers; /* Calculate the angle of rotation and need-to-flip for the output image. @@ -1155,6 +1198,14 @@ NAN_METHOD(pipeline) { baton->overlayYOffset = attrAs(options, "overlayYOffset"); baton->overlayTile = attrAs(options, "overlayTile"); baton->overlayCutout = attrAs(options, "overlayCutout"); + // Boolean options + baton->booleanFileIn = attrAsStr(options, "booleanFileIn"); + Local booleanBufferIn; + if (node::Buffer::HasInstance(Get(options, New("booleanBufferIn").ToLocalChecked()).ToLocalChecked())) { + booleanBufferIn = Get(options, New("booleanBufferIn").ToLocalChecked()).ToLocalChecked().As(); + baton->booleanBufferInLength = node::Buffer::Length(booleanBufferIn); + baton->booleanBufferIn = node::Buffer::Data(booleanBufferIn); + } // Resize options baton->withoutEnlargement = attrAs(options, "withoutEnlargement"); baton->crop = attrAs(options, "crop"); @@ -1232,14 +1283,10 @@ NAN_METHOD(pipeline) { } } // Bandbool operation - std::string opStr = attrAsStr(options, "bandBoolOp"); - if(opStr == "and" ) { - baton->bandBoolOp = VIPS_OPERATION_BOOLEAN_AND; - } else if(opStr == "or") { - baton->bandBoolOp = VIPS_OPERATION_BOOLEAN_OR; - } else if(opStr == "eor") { - baton->bandBoolOp = VIPS_OPERATION_BOOLEAN_EOR; - } + baton->bandBoolOp = GetBooleanOperation(attrAsStr(options, "bandBoolOp")); + + // Boolean operation + baton->booleanOp = GetBooleanOperation(attrAsStr(options, "booleanOp")); // Function to notify of queue length changes Callback *queueListener = new Callback( @@ -1248,7 +1295,15 @@ NAN_METHOD(pipeline) { // Join queue for worker thread Callback *callback = new Callback(info[1].As()); - AsyncQueueWorker(new PipelineWorker(callback, baton, queueListener, bufferIn, overlayBufferIn)); + + std::vector saveBuffers; + if (baton->bufferInLength) + saveBuffers.push_back({"bufferIn", bufferIn}); + if (baton->overlayBufferInLength) + saveBuffers.push_back({"overlayBufferIn", overlayBufferIn}); + if (baton->booleanBufferInLength) + saveBuffers.push_back({"booleanBufferIn", booleanBufferIn}); + AsyncQueueWorker(new PipelineWorker(callback, baton, queueListener, saveBuffers)); // Increment queued task counter g_atomic_int_inc(&counterQueue); diff --git a/src/pipeline.h b/src/pipeline.h index c6a64f5a..68961fd5 100644 --- a/src/pipeline.h +++ b/src/pipeline.h @@ -39,6 +39,9 @@ struct PipelineBaton { int overlayYOffset; bool overlayTile; bool overlayCutout; + std::string booleanFileIn; + char *booleanBufferIn; + size_t booleanBufferInLength; int topOffsetPre; int leftOffsetPre; int widthPre; @@ -94,6 +97,7 @@ struct PipelineBaton { double convKernelScale; double convKernelOffset; VipsOperationBoolean bandBoolOp; + VipsOperationBoolean booleanOp; int extractChannel; int tileSize; int tileOverlap; @@ -116,6 +120,7 @@ struct PipelineBaton { overlayYOffset(-1), overlayTile(false), overlayCutout(false), + booleanBufferInLength(0), topOffsetPre(-1), topOffsetPost(-1), channels(0), @@ -156,6 +161,7 @@ struct PipelineBaton { convKernelScale(0.0), convKernelOffset(0.0), bandBoolOp(VIPS_OPERATION_BOOLEAN_LAST), + booleanOp(VIPS_OPERATION_BOOLEAN_LAST), extractChannel(-1), tileSize(256), tileOverlap(0), diff --git a/test/fixtures/booleanTest.jpg b/test/fixtures/booleanTest.jpg new file mode 100644 index 0000000000000000000000000000000000000000..69835074bb471542449511bae9fc44c98c48c6f2 GIT binary patch literal 11428 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 St99Myt&#cZ@h&gD{r>>S32_<# literal 0 HcmV?d00001 diff --git a/test/fixtures/expected/boolean_and_result.jpg b/test/fixtures/expected/boolean_and_result.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cdc130195b2981afde613a3f8eb51edc1cf35865 GIT binary patch literal 14543 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