mirror of
https://github.com/lovell/sharp.git
synced 2025-07-13 04:20:12 +02:00
Ensure 16-bit input images can be normalised
This commit is contained in:
parent
e380576da2
commit
322aa60891
@ -20,7 +20,8 @@
|
||||
[#315](https://github.com/lovell/sharp/issues/315)
|
||||
[@impomezia](https://github.com/impomezia)
|
||||
|
||||
* Ensure 16-bit input images can be embedded onto a transparent background.
|
||||
* Ensure 16-bit input images can be normalised and embedded onto transparent backgrounds.
|
||||
[#339](https://github.com/lovell/sharp/issues/339)
|
||||
[#340](https://github.com/lovell/sharp/issues/340)
|
||||
[@janaz](https://github.com/janaz)
|
||||
|
||||
|
@ -5,28 +5,30 @@ var assert = require('assert');
|
||||
var sharp = require('../../index');
|
||||
var fixtures = require('../fixtures');
|
||||
|
||||
var assertNormalized = function(data) {
|
||||
var min = 255;
|
||||
var max = 0;
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
min = Math.min(min, data[i]);
|
||||
max = Math.max(max, data[i]);
|
||||
}
|
||||
assert.strictEqual(0, min);
|
||||
assert.strictEqual(255, max);
|
||||
};
|
||||
|
||||
describe('Normalization', function () {
|
||||
|
||||
it('uses the same prototype for both spellings', function() {
|
||||
assert.strictEqual(sharp.prototype.normalize, sharp.prototype.normalise);
|
||||
});
|
||||
|
||||
// Normalize is currently unavailable on Windows
|
||||
if (process.platform !== 'win32') {
|
||||
|
||||
it('spreads rgb image values between 0 and 255', function(done) {
|
||||
sharp(fixtures.inputJpgWithLowContrast)
|
||||
.normalize()
|
||||
.raw()
|
||||
.toBuffer(function (err, data, info) {
|
||||
if (err) throw err;
|
||||
var min = 255, max = 0, i;
|
||||
for (i = 0; i < data.length; i += 3) {
|
||||
min = Math.min(min, data[i], data[i + 1], data[i + 2]);
|
||||
max = Math.max(max, data[i], data[i + 1], data[i + 2]);
|
||||
}
|
||||
assert.strictEqual(0, min);
|
||||
assert.strictEqual(255, max);
|
||||
assertNormalized(data);
|
||||
done();
|
||||
});
|
||||
});
|
||||
@ -39,13 +41,7 @@ describe('Normalization', function () {
|
||||
.raw()
|
||||
.toBuffer(function (err, data, info) {
|
||||
if (err) throw err;
|
||||
var min = 255, max = 0, i;
|
||||
for (i = 0; i < data.length; i++) {
|
||||
min = Math.min(min, data[i]);
|
||||
max = Math.max(max, data[i]);
|
||||
}
|
||||
assert.strictEqual(0, min);
|
||||
assert.strictEqual(255, max);
|
||||
assertNormalized(data);
|
||||
done();
|
||||
});
|
||||
});
|
||||
@ -55,13 +51,8 @@ describe('Normalization', function () {
|
||||
.normalize()
|
||||
.raw()
|
||||
.toBuffer(function (err, data, info) {
|
||||
var min = 255, max = 0, i;
|
||||
for (i = 0; i < data.length; i++) {
|
||||
min = Math.min(min, data[i]);
|
||||
max = Math.max(max, data[i]);
|
||||
}
|
||||
assert.strictEqual(0, min);
|
||||
assert.strictEqual(255, max);
|
||||
if (err) throw err;
|
||||
assertNormalized(data);
|
||||
done();
|
||||
});
|
||||
});
|
||||
@ -70,7 +61,7 @@ describe('Normalization', function () {
|
||||
sharp(fixtures.inputPngWithTransparency)
|
||||
.normalize()
|
||||
.toBuffer(function (err, data) {
|
||||
if (err) return done(err);
|
||||
if (err) throw err;
|
||||
sharp(data).metadata(function(err, metadata) {
|
||||
if (err) return done(err);
|
||||
assert.strictEqual(4, metadata.channels);
|
||||
@ -85,7 +76,7 @@ describe('Normalization', function () {
|
||||
sharp(fixtures.inputPngWithGreyAlpha)
|
||||
.normalize()
|
||||
.toBuffer(function (err, data) {
|
||||
if (err) return done(err);
|
||||
if (err) throw err;
|
||||
sharp(data).metadata(function(err, metadata) {
|
||||
if (err) return done(err);
|
||||
assert.strictEqual(true, metadata.hasAlpha);
|
||||
@ -107,5 +98,15 @@ describe('Normalization', function () {
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
it('works with 16-bit RGBA images', function(done) {
|
||||
sharp(fixtures.inputPngWithTransparency16bit)
|
||||
.normalize()
|
||||
.raw()
|
||||
.toBuffer(function (err, data, info) {
|
||||
if (err) throw err;
|
||||
assertNormalized(data);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user