mirror of
https://github.com/lovell/sharp.git
synced 2025-07-09 18:40:16 +02:00
Ensure image >= 3x3 before attempting trim operation
See https://github.com/libvips/libvips/issues/1392
This commit is contained in:
parent
23b2e541ab
commit
3fa91bb4ce
@ -13,6 +13,8 @@ Requires libvips v8.8.1.
|
|||||||
[#1834](https://github.com/lovell/sharp/pull/1834)
|
[#1834](https://github.com/lovell/sharp/pull/1834)
|
||||||
[@jaubourg](https://github.com/jaubourg)
|
[@jaubourg](https://github.com/jaubourg)
|
||||||
|
|
||||||
|
* Ensure image is at least 3x3 pixels before attempting trim operation.
|
||||||
|
|
||||||
#### v0.23.0 - 29<sup>th</sup> July 2019
|
#### v0.23.0 - 29<sup>th</sup> July 2019
|
||||||
|
|
||||||
* Remove `overlayWith` previously deprecated in v0.22.0.
|
* Remove `overlayWith` previously deprecated in v0.22.0.
|
||||||
|
@ -250,6 +250,9 @@ namespace sharp {
|
|||||||
Trim an image
|
Trim an image
|
||||||
*/
|
*/
|
||||||
VImage Trim(VImage image, double const threshold) {
|
VImage Trim(VImage image, double const threshold) {
|
||||||
|
if (image.width() < 3 && image.height() < 3) {
|
||||||
|
throw VError("Image to trim must be at least 3x3 pixels");
|
||||||
|
}
|
||||||
// Top-left pixel provides the background colour
|
// Top-left pixel provides the background colour
|
||||||
VImage background = image.extract_area(0, 0, 1, 1);
|
VImage background = image.extract_area(0, 0, 1, 1);
|
||||||
if (HasAlpha(background)) {
|
if (HasAlpha(background)) {
|
||||||
|
@ -58,6 +58,27 @@ describe('Trim borders', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Attempt to trim 2x2 pixel image fails', function (done) {
|
||||||
|
sharp({
|
||||||
|
create: {
|
||||||
|
width: 2,
|
||||||
|
height: 2,
|
||||||
|
channels: 3,
|
||||||
|
background: 'red'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.trim()
|
||||||
|
.toBuffer()
|
||||||
|
.then(() => {
|
||||||
|
done(new Error('Expected an error'));
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
assert.strictEqual('Image to trim must be at least 3x3 pixels', err.message);
|
||||||
|
done();
|
||||||
|
})
|
||||||
|
.catch(done);
|
||||||
|
});
|
||||||
|
|
||||||
describe('Invalid thresholds', function () {
|
describe('Invalid thresholds', function () {
|
||||||
[-1, 'fail', {}].forEach(function (threshold) {
|
[-1, 'fail', {}].forEach(function (threshold) {
|
||||||
it(JSON.stringify(threshold), function () {
|
it(JSON.stringify(threshold), function () {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user