mirror of
https://github.com/lovell/sharp.git
synced 2025-07-09 02:30:12 +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 "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
|
||||
|
||||
|
@ -361,6 +361,7 @@ function extract (options) {
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* @returns {Sharp}
|
||||
* @throws {Error} Invalid parameters
|
||||
|
@ -102,6 +102,8 @@ class PipelineWorker : public Nan::AsyncWorker {
|
||||
// Trim
|
||||
if (baton->trimThreshold > 0.0) {
|
||||
image = sharp::Trim(image, baton->trimThreshold);
|
||||
baton->trimOffsetLeft = image.xoffset();
|
||||
baton->trimOffsetTop = image.yoffset();
|
||||
}
|
||||
|
||||
// Pre extraction
|
||||
@ -966,6 +968,12 @@ class PipelineWorker : public Nan::AsyncWorker {
|
||||
Set(info, New("cropOffsetTop").ToLocalChecked(),
|
||||
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) {
|
||||
// Pass ownership of output data to Buffer instance
|
||||
|
@ -82,6 +82,8 @@ struct PipelineBaton {
|
||||
int threshold;
|
||||
bool thresholdGrayscale;
|
||||
double trimThreshold;
|
||||
int trimOffsetLeft;
|
||||
int trimOffsetTop;
|
||||
double linearA;
|
||||
double linearB;
|
||||
double gamma;
|
||||
@ -177,6 +179,8 @@ struct PipelineBaton {
|
||||
threshold(0),
|
||||
thresholdGrayscale(true),
|
||||
trimThreshold(0.0),
|
||||
trimOffsetLeft(0),
|
||||
trimOffsetTop(0),
|
||||
linearA(1.0),
|
||||
linearB(0.0),
|
||||
gamma(0.0),
|
||||
|
@ -16,6 +16,8 @@ describe('Trim borders', function () {
|
||||
assert.strictEqual('png', info.format);
|
||||
assert.strictEqual(450, info.width);
|
||||
assert.strictEqual(322, info.height);
|
||||
assert.strictEqual(-204, info.trimOffsetLeft);
|
||||
assert.strictEqual(0, info.trimOffsetTop);
|
||||
fixtures.assertSimilar(expected, data, done);
|
||||
});
|
||||
});
|
||||
@ -29,6 +31,8 @@ describe('Trim borders', function () {
|
||||
if (err) throw err;
|
||||
assert.strictEqual('jpeg', info.format);
|
||||
assert.strictEqual(300, info.width);
|
||||
assert.strictEqual(-873, info.trimOffsetLeft);
|
||||
assert.strictEqual(-554, info.trimOffsetTop);
|
||||
fixtures.assertSimilar(expected, data, done);
|
||||
});
|
||||
});
|
||||
@ -44,6 +48,8 @@ describe('Trim borders', function () {
|
||||
assert.strictEqual(32, info.width);
|
||||
assert.strictEqual(32, info.height);
|
||||
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);
|
||||
});
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user