I've noticed in almost every method that you had "if it's GD, do A, if it's Imager, do B, etc.." This screams to me that you need to do some deeper encapsulation.
I would propose that you have Image::Mate::(GD|Imager|Image::Magick) and when new() is called bless your object to the user's preference.
Just my 2 cents.
"Go up to the next female stranger you see and tell her that her "body is a wonderland."
My hypothesis is that she’ll be too busy laughing at you to even bother slapping you." (src)