Skip to content

Negate doesn't work with create constructor #3139

@petrzjunior

Description

@petrzjunior

Possible bug

Is this a possible bug in a feature of sharp, unrelated to installation?

  • Running npm install sharp completes without error.
  • Running node -e "require('sharp')" completes without error.

Are you using the latest version of sharp?

  • I am using the latest version of sharp as reported by npm view sharp dist-tags.latest.

What is the output of running npx envinfo --binaries --system --npmPackages=sharp --npmGlobalPackages=sharp?

  System:
    OS: Linux 5.16 Arch Linux
    CPU: (8) x64 Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz
    Memory: 10.56 GB / 23.20 GB
    Container: Yes
    Shell: 5.8.1 - /usr/bin/zsh
  Binaries:
    Node: 16.9.1 - ~/.nvm/versions/node/v16.9.1/bin/node
    Yarn: 1.22.17 - /usr/bin/yarn
    npm: 7.21.1 - ~/.nvm/versions/node/v16.9.1/bin/npm

What are the steps to reproduce?

sharp({
  create: {
    width: 2,
    height: 2,
    channels: 3,
    background: { r: 10, g: 20, b: 30 }
  }
})
.negate()
.negate()
.toBuffer(function(err, data, info) {
  console.log('data', data);
});

What is the expected behaviour?

Expected output: data <Buffer 0a 14 1e 0a 14 1e 0a 14 1e 0a 14 1e>
Actual output: data <Buffer 00 00 00 00 00 00 00 00 00 00 00 00>

Additional information

Unit tests cover the case of loading PNG and JPEG which run correctly. But constructing the image manually via create {} turns all bytes into 00.

Calling negate should negate the image, but 00 is instead set to all bytes. When negate(true) is called, 00 is set to all bytes expect for the alpha channel, which is kept untouched.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions