mirror of
https://github.com/lovell/sharp.git
synced 2025-12-19 07:15:08 +01:00
Ensure conv kernel scale is clamped to min val of 1 #561
This commit is contained in:
BIN
test/fixtures/expected/conv-sobel-horizontal.jpg
vendored
Normal file
BIN
test/fixtures/expected/conv-sobel-horizontal.jpg
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
@@ -9,18 +9,17 @@ describe('Convolve', function() {
|
||||
|
||||
it('specific convolution kernel 1', function(done) {
|
||||
sharp(fixtures.inputPngStripesV)
|
||||
.resize(320, 240)
|
||||
.convolve(
|
||||
{
|
||||
'width': 3,
|
||||
'height': 3,
|
||||
'scale': 50,
|
||||
'offset': 0,
|
||||
'kernel': [ 10, 20, 10,
|
||||
0, 0, 0,
|
||||
10, 20, 10 ]
|
||||
})
|
||||
.convolve({
|
||||
width: 3,
|
||||
height: 3,
|
||||
scale: 50,
|
||||
offset: 0,
|
||||
kernel: [ 10, 20, 10,
|
||||
0, 0, 0,
|
||||
10, 20, 10 ]
|
||||
})
|
||||
.toBuffer(function(err, data, info) {
|
||||
if (err) throw err;
|
||||
assert.strictEqual('png', info.format);
|
||||
assert.strictEqual(320, info.width);
|
||||
assert.strictEqual(240, info.height);
|
||||
@@ -30,16 +29,15 @@ describe('Convolve', function() {
|
||||
|
||||
it('specific convolution kernel 2', function(done) {
|
||||
sharp(fixtures.inputPngStripesH)
|
||||
.resize(320, 240)
|
||||
.convolve(
|
||||
{
|
||||
'width': 3,
|
||||
'height': 3,
|
||||
'kernel': [ 1, 0, 1,
|
||||
2, 0, 2,
|
||||
1, 0, 1 ]
|
||||
})
|
||||
.convolve({
|
||||
width: 3,
|
||||
height: 3,
|
||||
kernel: [ 1, 0, 1,
|
||||
2, 0, 2,
|
||||
1, 0, 1 ]
|
||||
})
|
||||
.toBuffer(function(err, data, info) {
|
||||
if (err) throw err;
|
||||
assert.strictEqual('png', info.format);
|
||||
assert.strictEqual(320, info.width);
|
||||
assert.strictEqual(240, info.height);
|
||||
@@ -47,36 +45,48 @@ describe('Convolve', function() {
|
||||
});
|
||||
});
|
||||
|
||||
it('invalid kernel specification: no data', function() {
|
||||
assert.throws(function() {
|
||||
sharp(fixtures.inputJpg).convolve(
|
||||
{
|
||||
'width': 3,
|
||||
'height': 3,
|
||||
'kernel': []
|
||||
});
|
||||
});
|
||||
it('horizontal Sobel operator', function(done) {
|
||||
sharp(fixtures.inputJpg)
|
||||
.resize(320, 240)
|
||||
.convolve({
|
||||
width: 3,
|
||||
height: 3,
|
||||
kernel: [ -1, 0, 1,
|
||||
-2, 0, 2,
|
||||
-1, 0, 1 ]
|
||||
})
|
||||
.toBuffer(function(err, data, info) {
|
||||
if (err) throw err;
|
||||
assert.strictEqual('jpeg', info.format);
|
||||
assert.strictEqual(320, info.width);
|
||||
assert.strictEqual(240, info.height);
|
||||
fixtures.assertSimilar(fixtures.expected('conv-sobel-horizontal.jpg'), data, done);
|
||||
});
|
||||
});
|
||||
|
||||
it('invalid kernel specification: bad data format', function() {
|
||||
assert.throws(function() {
|
||||
sharp(fixtures.inputJpg).convolve(
|
||||
{
|
||||
'width': 3,
|
||||
'height': 3,
|
||||
'kernel': [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
|
||||
});
|
||||
describe('invalid kernel specification', function() {
|
||||
it('missing', function() {
|
||||
assert.throws(function() {
|
||||
sharp(fixtures.inputJpg).convolve({});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
it('invalid kernel specification: wrong width', function() {
|
||||
assert.throws(function() {
|
||||
sharp(fixtures.inputJpg).convolve(
|
||||
{
|
||||
'width': 3,
|
||||
'height': 4,
|
||||
'kernel': [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
it('incorrect data format', function() {
|
||||
assert.throws(function() {
|
||||
sharp(fixtures.inputJpg).convolve({
|
||||
width: 3,
|
||||
height: 3,
|
||||
kernel: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
|
||||
});
|
||||
});
|
||||
});
|
||||
it('incorrect dimensions', function() {
|
||||
assert.throws(function() {
|
||||
sharp(fixtures.inputJpg).convolve({
|
||||
width: 3,
|
||||
height: 4,
|
||||
kernel: [1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user