You could even just (I'm sure people will kill me for saying this, but meh) write Image_Metadata as a class with only a single public method (the constructor) which simply checks if the file wanting to be manipulated, can be, and if the extension package needed to do that is present, and then it includes the extension package and returns an object of said extension package which is then used by the user.
called a factory method..
$image = Image_MetaData::factory($filename);
it's pretty common in pear - see DB/Image_Transfrom...... - where 'drivers' are written for various backends, and any cominality is put into a base class..
Sounds plausible.. = with not to may changes for the time being... - and simple to extend for other image data formats???
Regards
Alan