imgly / background-removal-js

Remove backgrounds from images directly in the browser environment with ease and no additional costs or privacy concerns. Explore an interactive demo.
https://img.ly/showcases/cesdk/web/background-removal/web
GNU Affero General Public License v3.0
5.49k stars 339 forks source link

Output Image gets rotated #107

Open thumsl opened 3 months ago

thumsl commented 3 months ago

I'm running the node version, with a very simples program just to test it out and a lot of images get rotated, here's an example:

090691fb-9aeb-4d56-a1bb-9adaeee1c2a1 8ab4af6f-e095-4697-a4eb-eab199e5b4bb

Here's my code;

const fs = require('fs');

async function saveBlobToDisk(blob, outputPath) {
  try {
      const buffer = Buffer.from(await blob.arrayBuffer());
      fs.writeFileSync(outputPath, buffer);
      return 0;
  } catch (error) {
      return 1;
  }
}

async function remove(imgSource, outputPath) {
    let blob = await removeBackground(imgSource)
    saveBlobToDisk(blob, outputPath);
}

await remove('input.jpg', 'output.png');

Is this somehow an issue with my code, or is it a bug?

I don't think Github compresses uploaded images, so my original file can be used for testing purposes.

dasiux commented 3 months ago

I discovered the same issue, as for what i figured out, when running in the browser the exif orientation is respected and used for the output, when running via node the rotation is ignored and the pixeldata is returned as given, my current solution is to pre-process the image and apply respective orientation before handing it to the node process.