mirror of
https://github.com/lovell/sharp.git
synced 2025-07-11 03:20:13 +02:00
Ensure correct dimensions when contain 1px image #2951
This commit is contained in:
parent
319db21f29
commit
b33231d4bd
@ -4,6 +4,11 @@
|
|||||||
|
|
||||||
Requires libvips v8.11.3
|
Requires libvips v8.11.3
|
||||||
|
|
||||||
|
### v0.29.3 - TBD
|
||||||
|
|
||||||
|
* Ensure correct dimensions when containing image resized to 1px.
|
||||||
|
[#2951](https://github.com/lovell/sharp/issues/2951)
|
||||||
|
|
||||||
### v0.29.2 - 21st October 2021
|
### v0.29.2 - 21st October 2021
|
||||||
|
|
||||||
* Add `timeout` function to limit processing time.
|
* Add `timeout` function to limit processing time.
|
||||||
|
@ -382,11 +382,15 @@ class PipelineWorker : public Napi::AsyncWorker {
|
|||||||
// Ensure shortest edge is at least 1 pixel
|
// Ensure shortest edge is at least 1 pixel
|
||||||
if (image.width() / xfactor < 0.5) {
|
if (image.width() / xfactor < 0.5) {
|
||||||
xfactor = 2 * image.width();
|
xfactor = 2 * image.width();
|
||||||
baton->width = 1;
|
if (baton->canvas != Canvas::EMBED) {
|
||||||
|
baton->width = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (image.height() / yfactor < 0.5) {
|
if (image.height() / yfactor < 0.5) {
|
||||||
yfactor = 2 * image.height();
|
yfactor = 2 * image.height();
|
||||||
baton->height = 1;
|
if (baton->canvas != Canvas::EMBED) {
|
||||||
|
baton->height = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
image = image.resize(1.0 / xfactor, VImage::option()
|
image = image.resize(1.0 / xfactor, VImage::option()
|
||||||
->set("vscale", 1.0 / yfactor)
|
->set("vscale", 1.0 / yfactor)
|
||||||
|
@ -605,6 +605,40 @@ describe('Resize dimensions', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Ensure embedded shortest edge (height) is at least 1 pixel', function () {
|
||||||
|
return sharp({
|
||||||
|
create: {
|
||||||
|
width: 200,
|
||||||
|
height: 1,
|
||||||
|
channels: 3,
|
||||||
|
background: 'red'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.resize({ width: 50, height: 50, fit: sharp.fit.contain })
|
||||||
|
.toBuffer({ resolveWithObject: true })
|
||||||
|
.then(function (output) {
|
||||||
|
assert.strictEqual(50, output.info.width);
|
||||||
|
assert.strictEqual(50, output.info.height);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Ensure embedded shortest edge (width) is at least 1 pixel', function () {
|
||||||
|
return sharp({
|
||||||
|
create: {
|
||||||
|
width: 1,
|
||||||
|
height: 200,
|
||||||
|
channels: 3,
|
||||||
|
background: 'red'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.resize({ width: 50, height: 50, fit: sharp.fit.contain })
|
||||||
|
.toBuffer({ resolveWithObject: true })
|
||||||
|
.then(function (output) {
|
||||||
|
assert.strictEqual(50, output.info.width);
|
||||||
|
assert.strictEqual(50, output.info.height);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('Skip shrink-on-load where one dimension <4px', async () => {
|
it('Skip shrink-on-load where one dimension <4px', async () => {
|
||||||
const jpeg = await sharp({
|
const jpeg = await sharp({
|
||||||
create: {
|
create: {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user