Rust/WebAssembly image processing library

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • photon

    ⚡ Rust/WebAssembly image processing library (by silvia-odwyer)

  • fast_image_resize

    Rust library for fast image resizing with using of SIMD instructions.

  • Unfortunately mostly useless for professional applications.

    It fails the most simple test from [0] in the online demo[1]. ImageMagic also has a page about this[2]. I.e. also try the 'city lights' test with the online demo to see it fail for the same reason.

    The issue is that if you write code that deals with color you must understand color spaces and gamma. A non-linearly encoded color can't be plugged into any of the math you use to manipulate images and get meaningful results.

    Almost all code I come across in the Rust ecosystem (or elsewhere no less) treats color as linear. But color incoming from image files that are not RAW, EXR or some TIF variant is almost /never/ linear.

    The reason is that it is written by people who are (often very skilled) software developers but lack any basic understanding of color science.

    And then it often takes convicing the maintainers first and the yonx before it is fixed. I'm speaking from multiple experiences here.

    For example, the fast image resize crate[3] addressed the resp. issue I filed last Dec.[4] less than a week ago. From the crate being released in the wild to it adding an option to treat color correct almost 1.5 years passed.

    This is not the same as forcing crate users to treat color correct btw. The crate added a function that calls a closure but a user who do not understand color science may not grok why this is needed and not use it.

    I guess I'm saying there is also often an 'UX' issue that perpetuates the problem to the user side of the API after the crate itself addressed it somehow.

    That said, there are some very good crates that abstract the resp. parts away to address the issue. E.g. [5].

    [0] http://www.ericbrasseur.org/gamma.html?i=1#explanation

    [1] https://silvia-odwyer.github.io/photon/demo.html

    [2] https://legacy.imagemagick.org/Usage/resize/#resize_colorspa...

    [3] https://docs.rs/fast_image_resize

    [4] https://github.com/Cykooz/fast_image_resize/issues/3

    [5] https://docs.rs/colstodian

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts