mirror of
https://github.com/lovell/sharp.git
synced 2025-07-09 10:30:15 +02:00
Add trimOffsetLeft, trimOffsetTop to trim response #914
This commit is contained in:
parent
c431909f35
commit
0725378257
@ -196,6 +196,7 @@ Returns **Sharp**
|
|||||||
## trim
|
## trim
|
||||||
|
|
||||||
Trim "boring" pixels from all edges that contain values similar to the top-left pixel.
|
Trim "boring" pixels from all edges that contain values similar to the top-left pixel.
|
||||||
|
The `info` response Object will contain `trimOffsetLeft` and `trimOffsetTop` properties.
|
||||||
|
|
||||||
### Parameters
|
### Parameters
|
||||||
|
|
||||||
|
@ -361,6 +361,7 @@ function extract (options) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Trim "boring" pixels from all edges that contain values similar to the top-left pixel.
|
* Trim "boring" pixels from all edges that contain values similar to the top-left pixel.
|
||||||
|
* The `info` response Object will contain `trimOffsetLeft` and `trimOffsetTop` properties.
|
||||||
* @param {Number} [threshold=10] the allowed difference from the top-left pixel, a number greater than zero.
|
* @param {Number} [threshold=10] the allowed difference from the top-left pixel, a number greater than zero.
|
||||||
* @returns {Sharp}
|
* @returns {Sharp}
|
||||||
* @throws {Error} Invalid parameters
|
* @throws {Error} Invalid parameters
|
||||||
|
@ -102,6 +102,8 @@ class PipelineWorker : public Nan::AsyncWorker {
|
|||||||
// Trim
|
// Trim
|
||||||
if (baton->trimThreshold > 0.0) {
|
if (baton->trimThreshold > 0.0) {
|
||||||
image = sharp::Trim(image, baton->trimThreshold);
|
image = sharp::Trim(image, baton->trimThreshold);
|
||||||
|
baton->trimOffsetLeft = image.xoffset();
|
||||||
|
baton->trimOffsetTop = image.yoffset();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pre extraction
|
// Pre extraction
|
||||||
@ -966,6 +968,12 @@ class PipelineWorker : public Nan::AsyncWorker {
|
|||||||
Set(info, New("cropOffsetTop").ToLocalChecked(),
|
Set(info, New("cropOffsetTop").ToLocalChecked(),
|
||||||
New<v8::Int32>(static_cast<int32_t>(baton->cropOffsetTop)));
|
New<v8::Int32>(static_cast<int32_t>(baton->cropOffsetTop)));
|
||||||
}
|
}
|
||||||
|
if (baton->trimThreshold > 0.0) {
|
||||||
|
Set(info, New("trimOffsetLeft").ToLocalChecked(),
|
||||||
|
New<v8::Int32>(static_cast<int32_t>(baton->trimOffsetLeft)));
|
||||||
|
Set(info, New("trimOffsetTop").ToLocalChecked(),
|
||||||
|
New<v8::Int32>(static_cast<int32_t>(baton->trimOffsetTop)));
|
||||||
|
}
|
||||||
|
|
||||||
if (baton->bufferOutLength > 0) {
|
if (baton->bufferOutLength > 0) {
|
||||||
// Pass ownership of output data to Buffer instance
|
// Pass ownership of output data to Buffer instance
|
||||||
|
@ -82,6 +82,8 @@ struct PipelineBaton {
|
|||||||
int threshold;
|
int threshold;
|
||||||
bool thresholdGrayscale;
|
bool thresholdGrayscale;
|
||||||
double trimThreshold;
|
double trimThreshold;
|
||||||
|
int trimOffsetLeft;
|
||||||
|
int trimOffsetTop;
|
||||||
double linearA;
|
double linearA;
|
||||||
double linearB;
|
double linearB;
|
||||||
double gamma;
|
double gamma;
|
||||||
@ -177,6 +179,8 @@ struct PipelineBaton {
|
|||||||
threshold(0),
|
threshold(0),
|
||||||
thresholdGrayscale(true),
|
thresholdGrayscale(true),
|
||||||
trimThreshold(0.0),
|
trimThreshold(0.0),
|
||||||
|
trimOffsetLeft(0),
|
||||||
|
trimOffsetTop(0),
|
||||||
linearA(1.0),
|
linearA(1.0),
|
||||||
linearB(0.0),
|
linearB(0.0),
|
||||||
gamma(0.0),
|
gamma(0.0),
|
||||||
|
@ -16,6 +16,8 @@ describe('Trim borders', function () {
|
|||||||
assert.strictEqual('png', info.format);
|
assert.strictEqual('png', info.format);
|
||||||
assert.strictEqual(450, info.width);
|
assert.strictEqual(450, info.width);
|
||||||
assert.strictEqual(322, info.height);
|
assert.strictEqual(322, info.height);
|
||||||
|
assert.strictEqual(-204, info.trimOffsetLeft);
|
||||||
|
assert.strictEqual(0, info.trimOffsetTop);
|
||||||
fixtures.assertSimilar(expected, data, done);
|
fixtures.assertSimilar(expected, data, done);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -29,6 +31,8 @@ describe('Trim borders', function () {
|
|||||||
if (err) throw err;
|
if (err) throw err;
|
||||||
assert.strictEqual('jpeg', info.format);
|
assert.strictEqual('jpeg', info.format);
|
||||||
assert.strictEqual(300, info.width);
|
assert.strictEqual(300, info.width);
|
||||||
|
assert.strictEqual(-873, info.trimOffsetLeft);
|
||||||
|
assert.strictEqual(-554, info.trimOffsetTop);
|
||||||
fixtures.assertSimilar(expected, data, done);
|
fixtures.assertSimilar(expected, data, done);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -44,6 +48,8 @@ describe('Trim borders', function () {
|
|||||||
assert.strictEqual(32, info.width);
|
assert.strictEqual(32, info.width);
|
||||||
assert.strictEqual(32, info.height);
|
assert.strictEqual(32, info.height);
|
||||||
assert.strictEqual(4, info.channels);
|
assert.strictEqual(4, info.channels);
|
||||||
|
assert.strictEqual(-2, info.trimOffsetLeft);
|
||||||
|
assert.strictEqual(-2, info.trimOffsetTop);
|
||||||
fixtures.assertSimilar(fixtures.expected('trim-16bit-rgba.png'), data, done);
|
fixtures.assertSimilar(fixtures.expected('trim-16bit-rgba.png'), data, done);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user