Breaking change to API to become more expressive (see #8). Add support for upscaling.

This commit is contained in:
Lovell Fuller
2014-03-09 21:44:03 +00:00
parent d0e6a4c0f3
commit 5f61331d1a
8 changed files with 272 additions and 146 deletions

View File

@@ -11,7 +11,7 @@ async.mapSeries([1, 1, 2, 4, 8, 16, 32, 64, 128], function(parallelism, next) {
var start = new Date().getTime();
async.times(parallelism,
function(id, callback) {
sharp.resize(inputJpg, sharp.buffer.jpeg, width, height, function(err, buffer) {
sharp(inputJpg).resize(width, height).toBuffer(function(err, buffer) {
buffer = null;
callback(err, new Date().getTime() - start);
});

View File

@@ -83,7 +83,7 @@ async.series({
}).add("sharp-buffer-file", {
defer: true,
fn: function(deferred) {
sharp.resize(inputJpgBuffer, outputJpg, width, height, function(err) {
sharp(inputJpgBuffer).resize(width, height).write(outputJpg, function(err) {
if (err) {
throw err;
} else {
@@ -94,7 +94,7 @@ async.series({
}).add("sharp-buffer-buffer", {
defer: true,
fn: function(deferred) {
sharp.resize(inputJpgBuffer, sharp.buffer.jpeg, width, height, function(err, buffer) {
sharp(inputJpgBuffer).resize(width, height).toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -106,7 +106,7 @@ async.series({
}).add("sharp-file-file", {
defer: true,
fn: function(deferred) {
sharp.resize(inputJpg, outputJpg, width, height, function(err) {
sharp(inputJpg).resize(width, height).write(outputJpg, function(err) {
if (err) {
throw err;
} else {
@@ -117,7 +117,7 @@ async.series({
}).add("sharp-file-buffer", {
defer: true,
fn: function(deferred) {
sharp.resize(inputJpg, sharp.buffer.jpeg, width, height, function(err, buffer) {
sharp(inputJpg).resize(width, height).toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -129,7 +129,7 @@ async.series({
}).add("sharp-file-buffer-sharpen", {
defer: true,
fn: function(deferred) {
sharp.resize(inputJpg, sharp.buffer.jpeg, width, height, {sharpen: true}, function(err, buffer) {
sharp(inputJpg).resize(width, height).sharpen().toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -141,7 +141,7 @@ async.series({
}).add("sharp-file-buffer-progressive", {
defer: true,
fn: function(deferred) {
sharp.resize(inputJpg, sharp.buffer.jpeg, width, height, {progressive: true}, function(err, buffer) {
sharp(inputJpg).resize(width, height).progressive().toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -153,7 +153,7 @@ async.series({
}).add("sharp-file-buffer-sequentialRead", {
defer: true,
fn: function(deferred) {
sharp.resize(inputJpg, sharp.buffer.jpeg, width, height, {sequentialRead: true}, function(err, buffer) {
sharp(inputJpg).resize(width, height).sequentialRead().toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -212,7 +212,7 @@ async.series({
}).add("sharp-buffer-file", {
defer: true,
fn: function(deferred) {
sharp.resize(inputPngBuffer, outputPng, width, height, function(err) {
sharp(inputPngBuffer).resize(width, height).write(outputPng, function(err) {
if (err) {
throw err;
} else {
@@ -223,7 +223,7 @@ async.series({
}).add("sharp-buffer-buffer", {
defer: true,
fn: function(deferred) {
sharp.resize(inputPngBuffer, sharp.buffer.png, width, height, function(err, buffer) {
sharp(inputPngBuffer).resize(width, height).toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -235,7 +235,7 @@ async.series({
}).add("sharp-file-file", {
defer: true,
fn: function(deferred) {
sharp.resize(inputPng, outputPng, width, height, function(err) {
sharp(inputPng).resize(width, height).write(outputPng, function(err) {
if (err) {
throw err;
} else {
@@ -246,7 +246,7 @@ async.series({
}).add("sharp-file-buffer", {
defer: true,
fn: function(deferred) {
sharp.resize(inputPng, sharp.buffer.png, width, height, function(err, buffer) {
sharp(inputPng).resize(width, height).toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -258,7 +258,7 @@ async.series({
}).add("sharp-file-buffer-sharpen", {
defer: true,
fn: function(deferred) {
sharp.resize(inputPng, sharp.buffer.png, width, height, {sharpen: true}, function(err, buffer) {
sharp(inputPng).resize(width, height).sharpen().toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -270,7 +270,7 @@ async.series({
}).add("sharp-file-buffer-progressive", {
defer: true,
fn: function(deferred) {
sharp.resize(inputPng, sharp.buffer.png, width, height, {progressive: true}, function(err, buffer) {
sharp(inputPng).resize(width, height).progressive().toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -282,7 +282,7 @@ async.series({
}).add("sharp-file-buffer-sequentialRead", {
defer: true,
fn: function(deferred) {
sharp.resize(inputPng, sharp.buffer.png, width, height, {sequentialRead: true}, function(err, buffer) {
sharp(inputPng).sequentialRead().resize(width, height).toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -302,7 +302,7 @@ async.series({
(new Benchmark.Suite("webp")).add("sharp-buffer-file", {
defer: true,
fn: function(deferred) {
sharp.resize(inputWebpBuffer, outputWebp, width, height, function(err) {
sharp(inputWebpBuffer).resize(width, height).write(outputWebp, function(err) {
if (err) {
throw err;
} else {
@@ -313,7 +313,7 @@ async.series({
}).add("sharp-buffer-buffer", {
defer: true,
fn: function(deferred) {
sharp.resize(inputWebpBuffer, sharp.buffer.webp, width, height, function(err, buffer) {
sharp(inputWebpBuffer).resize(width, height).toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -325,7 +325,7 @@ async.series({
}).add("sharp-file-file", {
defer: true,
fn: function(deferred) {
sharp.resize(inputWebp, outputWebp, width, height, function(err) {
sharp(inputWebp).resize(width, height).write(outputWebp, function(err) {
if (err) {
throw err;
} else {
@@ -336,7 +336,7 @@ async.series({
}).add("sharp-file-buffer", {
defer: true,
fn: function(deferred) {
sharp.resize(inputWebp, sharp.buffer.webp, width, height, function(err, buffer) {
sharp(inputWebp).resize(width, height).toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -348,7 +348,7 @@ async.series({
}).add("sharp-file-buffer-sharpen", {
defer: true,
fn: function(deferred) {
sharp.resize(inputWebp, sharp.buffer.webp, width, height, {sharpen: true}, function(err, buffer) {
sharp(inputWebp).resize(width, height).sharpen().toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -360,7 +360,7 @@ async.series({
}).add("sharp-file-buffer-sequentialRead", {
defer: true,
fn: function(deferred) {
sharp.resize(inputWebp, sharp.buffer.webp, width, height, {sequentialRead: true}, function(err, buffer) {
sharp(inputWebp).sequentialRead().resize(width, height).toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {
@@ -379,7 +379,7 @@ async.series({
(new Benchmark.Suite("tiff")).add("sharp-file-file", {
defer: true,
fn: function(deferred) {
sharp.resize(inputTiff, outputTiff, width, height, function(err) {
sharp(inputTiff).resize(width, height).write(outputTiff, function(err) {
if (err) {
throw err;
} else {
@@ -390,7 +390,7 @@ async.series({
}).add("sharp-file-file-sharpen", {
defer: true,
fn: function(deferred) {
sharp.resize(inputTiff, outputTiff, width, height, {sharpen: true}, function(err) {
sharp(inputTiff).resize(width, height).sharpen().write(outputTiff, function(err) {
if (err) {
throw err;
} else {
@@ -401,7 +401,7 @@ async.series({
}).add("sharp-file-file-sequentialRead", {
defer: true,
fn: function(deferred) {
sharp.resize(inputTiff, outputTiff, width, height, {sequentialRead: true}, function(err) {
sharp(inputTiff).sequentialRead().resize(width, height).write(outputTiff, function(err) {
if (err) {
throw err;
} else {

View File

@@ -57,7 +57,7 @@ new Benchmark.Suite("random").add("imagemagick", {
}).add("sharp", {
defer: true,
fn: function(deferred) {
sharp.resize(inputJpg, sharp.buffer.jpeg, randomDimension(), randomDimension(), function(err, buffer) {
sharp(inputJpg).resize(randomDimension(), randomDimension()).toBuffer(function(err, buffer) {
if (err) {
throw err;
} else {

View File

@@ -7,8 +7,9 @@ var inputJpg = __dirname + "/2569067123_aca715a2ee_o.jpg"; // http://www.flickr.
var outputJpg = __dirname + "/output.jpg";
async.series([
// Resize with exact crop
function(done) {
sharp.resize(inputJpg, outputJpg, 320, 240, function(err) {
sharp(inputJpg).resize(320, 240).write(outputJpg, function(err) {
if (err) throw err;
imagemagick.identify(outputJpg, function(err, features) {
if (err) throw err;
@@ -18,30 +19,33 @@ async.series([
});
});
},
// Resize to fixed width
function(done) {
sharp.resize(inputJpg, outputJpg, 320, -1, function(err) {
sharp(inputJpg).resize(320).write(outputJpg, function(err) {
if (err) throw err;
imagemagick.identify(outputJpg, function(err, features) {
if (err) throw err;
assert.strictEqual(320, features.width);
assert.strictEqual(262, features.height);
assert.strictEqual(261, features.height);
done();
});
});
},
// Resize to fixed height
function(done) {
sharp.resize(inputJpg, outputJpg, -1, 320, function(err) {
sharp(inputJpg).resize(null, 320).write(outputJpg, function(err) {
if (err) throw err;
imagemagick.identify(outputJpg, function(err, features) {
if (err) throw err;
assert.strictEqual(392, features.width);
assert.strictEqual(391, features.width);
assert.strictEqual(320, features.height);
done();
});
});
},
// Identity transform
function(done) {
sharp.resize(inputJpg, outputJpg, -1, -1, function(err) {
sharp(inputJpg).write(outputJpg, function(err) {
if (err) throw err;
imagemagick.identify(outputJpg, function(err, features) {
if (err) throw err;
@@ -50,5 +54,17 @@ async.series([
done();
});
});
},
// Upscale
function(done) {
sharp(inputJpg).resize(3000).write(outputJpg, function(err) {
if (err) throw err;
imagemagick.identify(outputJpg, function(err, features) {
if (err) throw err;
assert.strictEqual(3000, features.width);
assert.strictEqual(2449, features.height);
done();
});
});
}
]);