mirror of
https://github.com/lovell/sharp.git
synced 2025-07-09 10:30:15 +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)
|
||||
[@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
|
||||
|
||||
* Remove `overlayWith` previously deprecated in v0.22.0.
|
||||
|
@ -250,6 +250,9 @@ namespace sharp {
|
||||
Trim an image
|
||||
*/
|
||||
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
|
||||
VImage background = image.extract_area(0, 0, 1, 1);
|
||||
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 () {
|
||||
[-1, 'fail', {}].forEach(function (threshold) {
|
||||
it(JSON.stringify(threshold), function () {
|
||||
|
Loading…
x
Reference in New Issue
Block a user