unjs / ipx

🖼️ High performance, secure and easy-to-use image optimizer.
MIT License
1.2k stars 59 forks source link

Incorrect resize result for an image #194

Open dmitriy-nz opened 7 months ago

dmitriy-nz commented 7 months ago

Environment

ipx - 2.0.2 nodejs - v18.16.1

Reproduction

Clone repo: https://github.com/dmitriy-nz/ipx-test Install deps Run npx ipx serve --dir ./imgs Open url: http://localhost:3000/s_200x200,fit_inside/test.jpg - Already at this step you will get an image with an incorrect size

On the native sharp everything works as expected with the same set of parameters Run node index.js for get the expected result via a native sharp Check output.jpg

Describe the bug

When I try to resize a "skinny" image I get the wrong result.

Original image (30x600): test

Call resize via ipx with parameters s_200x200,fit_inside and get wrong result (1x30): test

I ran the resize with the same parameters through native sharp and everything works as expected (10x200): output

Additional context

No response

Logs

No response

jameswragg commented 7 months ago

Tracked the issue to this clampDimensionsPreservingAspectRatio fn call. Sharp seems to handle this correctly now, as works as expected when those lines are commented out. I'd question wether this manual patching still needed.