class.upload.php is a powerful and mature PHP class to manage uploaded files, and manipulate images in many ways. The script is available under a GPL license.
Animated GIFs would require a complete rewrite of the class, as previously stated in the forum.
It is true that image_ratio_no_zoom_in and image_ratio_no_zoom_out are a problem since they cannot be used with other image_ratio_* settings. This will be fixed in a future version.
For the rest, I disagree. You can set image_x, image_y and image_ratio to constraint your image in set dimensions. Or you can use image_ratio_fill or image_ratio_crop to fit perfectly in these dimensions.
But also, before calling process(), you can can read image_src_x and image_src_y to accordingly set your settings. Basically, you can do your own logic before calling process, rather than having the class trying to work some magic which would likely not fit with everybody.
It is true that image_ratio_no_zoom_in and image_ratio_no_zoom_out are a problem since they cannot be used with other image_ratio_* settings. This will be fixed in a future version.
For the rest, I disagree. You can set image_x, image_y and image_ratio to constraint your image in set dimensions. Or you can use image_ratio_fill or image_ratio_crop to fit perfectly in these dimensions.
But also, before calling process(), you can can read image_src_x and image_src_y to accordingly set your settings. Basically, you can do your own logic before calling process, rather than having the class trying to work some magic which would likely not fit with everybody.
Does it answer your points?