diff --git a/src/resize.cc b/src/resize.cc index 93ade321..e342a147 100755 --- a/src/resize.cc +++ b/src/resize.cc @@ -593,7 +593,7 @@ class ResizeWorker : public NanAsyncWorker { } // Create background VipsArrayDouble *background; - if (baton->background[3] < 255.0) { + if (baton->background[3] < 255.0 || HasAlpha(image)) { background = vips_array_double_newv( 4, baton->background[0], baton->background[1], baton->background[2], baton->background[3] ); diff --git a/test/unit/embed.js b/test/unit/embed.js index d8757d34..7a6c1d6f 100755 --- a/test/unit/embed.js +++ b/test/unit/embed.js @@ -50,4 +50,22 @@ describe('Embed', function() { }); } + it('PNG with alpha channel', function(done) { + sharp(fixtures.inputPngWithTransparency) + .resize(50, 50) + .embed() + .toBuffer(function(err, data, info) { + if (err) throw err; + assert.strictEqual(true, data.length > 0); + assert.strictEqual('png', info.format); + assert.strictEqual(50, info.width); + assert.strictEqual(50, info.height); + sharp(data).metadata(function(err, metadata) { + if (err) throw err; + assert.strictEqual(4, metadata.channels); + done(); + }); + }); + }); + });