Replies: 16 comments 2 replies
-
Hi @ttddee, Thank you for your suggestion! I have looked into openimageio and it seems like it could be implemented into Gimel Studio. It would allow for higher-res images, etc which is a big advantage over Pillow. Are there any pre-built binaries on PyPI? I couldn't find any. Thanks again. |
Beta Was this translation helpful? Give feedback.
-
I am not sure. What platform are you on? Building on Linux is straight forward and on Windows you can get a semi-recent version through vcpkg. |
Beta Was this translation helpful? Give feedback.
-
O.k. After a bit of looking I was able to find binaries here Thanks again! |
Beta Was this translation helpful? Give feedback.
-
Great! Also if you want to check out what I have been doing, see here: https://github.com/ttddee/Cascade Still very early stage though ;) |
Beta Was this translation helpful? Give feedback.
-
Hi @ttddee, After looking at OpenImageIO, I'm leaning towards going to https://github.com/libvips/libvips. Do you have any experience with libvips vs OpenimageIO? I'm not really sure how they differ. Obviously, you went with OpenImageIO I am guessing, but is there a specific reason why? Libvips seems to be faster based on the benchmarks. (?) Hope you're having a great day! |
Beta Was this translation helpful? Give feedback.
-
That seems like a viable option too. OpenImageIO is kind of the industry standard in Visual Effects and it integrates with OpenColorIO, so you get IO and color space management all in one. I have no experience with libvips but it would give you a lot of image processing functionality out of the box by the looks of it. From having a quick look at it I couldn't see if it supports 32 bits per channel. |
Beta Was this translation helpful? Give feedback.
-
From what I can see it does support 32 bit images, as well as openexr, etc. How is openimageio? Is it low-level or does it come with
like you mentioned (and I can see) for libvips? The only thing I dislike about libvips is the Python bindings are a bit harder to install than openimageio. Openimageio has pre-built wheels but libvips doesn't seem to have any. |
Beta Was this translation helpful? Give feedback.
-
Actually, No it wouldn't be beneficial. PIL/Pillow has been around a long time and is probably the best supported image lib for python. A better request would be since this is plugin based is to port whichever nodes you have to whatever other library you are suggesting. |
Beta Was this translation helpful? Give feedback.
-
You can see here what it does for processing: https://openimageio.readthedocs.io/en/release-2.2.8.0/imagebufalgo.html It is mostly an IO library but covers the basics of processing. There might be other options in Python-land that I don't know about. Maybe I should have worded this differently, I am only talking IO, you could use something else for processing. |
Beta Was this translation helpful? Give feedback.
-
I wasn't talking about how to implement image effects, I was talking IO. Sorry if that was not clear. OIIO/OCIO is just what everybody uses (including Blender) and it makes it easy to be "compatible" with other software packages. I think PIL lacks support for PSD, EXR, color spaces(ACES, lin, log, etc...)? I might be wrong though, since I don't know PIL very well and I am sure other libraries are fine too. |
Beta Was this translation helpful? Give feedback.
-
I recall you can do stuff with it, but psd is a closed format so pil may not spend much time on it. I personally use |
Beta Was this translation helpful? Give feedback.
-
True. I'd really like to stick to Pillow for those reasons (plus since it's well-known in the Python community, it would be easier for users to script custom nodes with than OpenImageIO or libvips, etc), but... Pillow doesn't have full support 16 or 32 bit images -only 8-bit is fully supported from what I could find. Plus, it would be nice to have EXR and color spaces support, etc too.
This is a good idea. This is similar to an idea I was thinking about: possibly edit things a bit to where we can have different "renderers" (e.g: "pillow", "libvips", "openimageio", etc, etc...) and (like you said) different nodes specific for that "renderer". Or maybe, just try to "smooth-out" the differences between the image libs and do it that way (in that case some nodes would support 16-bit (for example) and others would not. I think this is what you're saying here (which are great ideas, BTW):
|
Beta Was this translation helpful? Give feedback.
-
Yes, that was clear. I was just wondering if it could be used for processing as well. :)
Yes, I think you're right, sadly. :( |
Beta Was this translation helpful? Give feedback.
-
Yeah, I was able to get a working prototype of opening a PSD image with pillow. It doesn't seem to have the best support, but it works. I don't personal use Photoshop (and never have, past launching it and closing it....), so I don't see PSD support as a feature that needs to be implemented, but others might (?).
Not sure about dds. Pillow doesn't seem to have full support for 16/32-bit images, etc. Correct me (Please) if I am wrong (which I really hope I am -on that)! I agree -Krita has really come a long ways. |
Beta Was this translation helpful? Give feedback.
-
Just to update, I've currently been testing and looking into:
The main reason I am not keen on implementing OpenImageIO right now, is I am not sure it would add that much (vs. OpenCV for IO), except another dependency..... If anyone would like to join in helping with these two objectives, feel free to contact me and/or respond to this comment. :) |
Beta Was this translation helpful? Give feedback.
-
UPDATE: We're now using OpenImageIO in the new development version at https://github.com/GimelStudio/GimelStudio. Thanks for suggesting this @ttddee as now nearly a year later I've figured out a way to implement it correctly. 😅 |
Beta Was this translation helpful? Give feedback.
-
Hi there!
Very cool project! I am working on something similar.
Maybe it would be beneficial to replace PIL with OpenImageIO.
It has support for lots of formats, color space conversions and can work with 32 bit floating point images.
Beta Was this translation helpful? Give feedback.
All reactions