> GraphicsMagick really does need some additional productive volunteers. For several years now, the burden has entirely been on me. I have been sheparding the project for 19 years already (and contributed to ImageMagick and GraphicsMagick combined for 25 years already). It is not reasonable to expect someone with a full time job (and expecting to retire in a couple of years) to do all of the work.
- The library is their baby and it’s hard to not get attached and feel personally responsible.
- There are a lot of people who seem to think they have a right to be demanding of open source volunteers.
- A lot of people don’t know how to ask for and get help.
- They don’t know how to leverage the help that is offered. (Or simply the help offered isn’t the right kind)
- Delegation is hard. Letting go is hard.
gm convert $1 -channel red -normalize -channel green -normalize -channel blue -normalize normalized/$1Here's an example that was topical back then: https://cmacleod.me.uk/tcl/magick/boris.gif .
If GraphicsMagick is better than that, then it is clearly a benefit of having it around.
I can't recommend libvips enough. I recently switched to it from ImageMagick+tificc in a flatbed scanner appliance and am seeing a minimum of a 2x performance increase with minimal memory usage. libvips makes it easy to setup a pipeline of transformations and utilizes all CPU cores by default.
Even outside of using via pyvips, I've noticed similar performance gains over ImageMagick by using the CLI of libvips. https://www.libvips.org/API/current/using-cli.html
I almost didn't click through to read about libvips, since I only want to use these tools from a CLI/shell interface, but - would you look at that - it's got command line bindings! I'm going to have to give this a try to see if it can do some of the "magick" stuff...
https://github.com/libvips/pyvips
The idea is that complex CLIs like imagemagick's are almost complete programming languages, and need a lot of learning. It's much better (imo) (and less work) to have a good binding, and to lean on python for the programming side.
libvips is mostly self-binding. It has good introspection support, so the core of pyvips is just 200 lines of code, and automatically updates itself for new libvips versions.