1) imagick uses memory better. I've seen so many GD-based server that choked with large images. This almost hardly ever happen with imagick. I always insist on our user to enable imagick and almost all their GD memory problem goes away.
2) Performance and server load. I didn't have a hard-stats on this, but we noticed that imagick is noticeable quicker and are less taxing on the server.
Development-wise, I don't think we should allow user to choose which one to use. We should really just use imagick if they are available, otherwise revert back to GD.
As for the need for engine abstraction, it might be nice, but not entirely needed since there probably going to be only these 2 engine in foreseeable future. A simple functionality test (similar implementation in JFtp) i believe is sufficient.
I've started to refactoring the jimage here: https://github.com/oc666/joomla-platform/tree/jimagemagick/libraries/joomla/image
First, I've made the image.php interface which all layers (gd, imagemagick) implements (see layers/imagegd.php). After it, implement image factory for controlling the image layer (auto would be one of the cool options to choose automatically the available one). Finally, I would implement the filter objects to be executed via the factory (depend on the layer supply).
I would be grateful if others would help with that including
thoughts on better implementations or efforts have been done so
far.
Ofer Cohen Joomlics Anonymous Group
And about the filters of imagemagick, you can check this:
http://php.net/manual/en/imagick.resizeimage.php
http://www.php.net/manual/en/imagick.constants.php#imagick.constants.filters
Ofer Cohen Joomlics Anonymous Group
And about the filtering, you can check this:
http://www.php.net/manual/en/imagick.constants.php#imagick.constants.filters
Ofer Cohen