Open federicomenaquintero opened 10 months ago
This library neither applies pre-multiplication nor removes it. We'll return the pixel values as they're stored in the file so it is up to you to know whether your image files come pre-multiplied or not.
The main image crate however does contain some amount of code for applying blending which I believe assumes that the image is stored non-premultiplied
But is there a convention for the DynamicImage's the decoders in image-rs give?
In practice, DynamicImage
's are usually not premultiplied because the majority of image files don't use premultiplied alpha.
However, there's some challenges to making that a convention everywhere:
*I think the PNG spec says images are always supposed to be non-premultiplied but people sometimes ignore that.
Do we have any formats that actually output premultiplied? (not counting non-standard PNG extensions or hacks)
I think we can document they're always uncorrelated.
Stuffing other data into lossless formats is not our problem (the alpha could be a heightmap or rgb could be normals).
This issue is slightly confusing because it is opened against the image-png
repository but asking about a type that is only provided in the image
repository. Answers are different depending on whether you're dealing only with PNG or with any image format that image-rs supports now or in the future.
Do we have any formats that actually output premultiplied?
Yes. The TIFF format supports both premultiplied and non-premultiplied alpha. Not sure precisely how image
handles it though
I couldn't find the string
premul
in the source code except for the algorithm in the blend filter :sweat_smile:Are images decoded with alpha premultiplied or not? It doesn't matter for my application; it can handle either format.