Ensure sharp.format lists support for raw input #220

This commit is contained in:
Lovell Fuller 2016-02-11 18:12:51 +00:00
parent a9eb65c462
commit 6ca2a4a9cd
3 changed files with 13 additions and 8 deletions

View File

@ -752,7 +752,7 @@ class PipelineWorker : public AsyncWorker {
area->free_fn = nullptr; area->free_fn = nullptr;
vips_area_unref(area); vips_area_unref(area);
baton->formatOut = "webp"; baton->formatOut = "webp";
} else if (baton->formatOut == "raw") { } else if (baton->formatOut == "raw" || (baton->formatOut == "input" && inputImageType == ImageType::RAW)) {
// Write raw, uncompressed image data to buffer // Write raw, uncompressed image data to buffer
if (baton->greyscale || image.interpretation() == VIPS_INTERPRETATION_B_W) { if (baton->greyscale || image.interpretation() == VIPS_INTERPRETATION_B_W) {
// Extract first band for greyscale image // Extract first band for greyscale image

View File

@ -172,19 +172,17 @@ NAN_METHOD(format) {
Local<String> rawId = New("raw").ToLocalChecked(); Local<String> rawId = New("raw").ToLocalChecked();
Set(raw, attrId, rawId); Set(raw, attrId, rawId);
Set(format, rawId, raw); Set(format, rawId, raw);
// No support for raw input yet, so always false Local<Boolean> supported = New<Boolean>(true);
Local<Boolean> unsupported = New<Boolean>(false); Local<Boolean> unsupported = New<Boolean>(false);
Local<Object> rawInput = New<Object>(); Local<Object> rawInput = New<Object>();
Set(rawInput, attrFile, unsupported); Set(rawInput, attrFile, unsupported);
Set(rawInput, attrBuffer, unsupported); Set(rawInput, attrBuffer, supported);
Set(rawInput, attrStream, unsupported); Set(rawInput, attrStream, supported);
Set(raw, attrInput, rawInput); Set(raw, attrInput, rawInput);
// Raw output via Buffer/Stream is available in libvips >= 7.42.0
Local<Boolean> hasOutputBufferRaw = New<Boolean>(vips_version(0) >= 8 || (vips_version(0) == 7 && vips_version(1) >= 42));
Local<Object> rawOutput = New<Object>(); Local<Object> rawOutput = New<Object>();
Set(rawOutput, attrFile, unsupported); Set(rawOutput, attrFile, unsupported);
Set(rawOutput, attrBuffer, hasOutputBufferRaw); Set(rawOutput, attrBuffer, supported);
Set(rawOutput, attrStream, hasOutputBufferRaw); Set(rawOutput, attrStream, supported);
Set(raw, attrOutput, rawOutput); Set(raw, attrOutput, rawOutput);
info.GetReturnValue().Set(format); info.GetReturnValue().Set(format);

View File

@ -113,6 +113,13 @@ describe('Utilities', function() {
}); });
}); });
}); });
it('Raw file=false, buffer=true, stream=true', function() {
['input', 'output'].forEach(function(direction) {
assert.strictEqual(false, sharp.format.raw[direction].file);
assert.strictEqual(true, sharp.format.raw[direction].buffer);
assert.strictEqual(true, sharp.format.raw[direction].stream);
});
});
}); });
describe('Versions', function() { describe('Versions', function() {