How do I get the file URI from an EntityMetadataWrapper object?
Big thanks to MPD for pointing me in the right direction. In short, without the File Entity module, files aren't entities, so they don't naturally have the 'properties' I was expecting.

The Entity module provides some on their behalf, but URI isn't one of them. Fortunately it's very simple to make it available using hook_entity_property_info_alter() and a custom property callback:

function MYMODULE_entity_property_info_alter(&amp;$info) {
  $info['file']['properties']['uri'] = array(
    'label' =&gt; t("URI"),
    'description' =&gt; t("The URI of the file."),
    'getter callback' =&gt; 'MYMODULE_entity_get_file_properties',
    'schema field' =&gt; 'uri',
  );
}

function MYMODULE_entity_get_file_properties($file, array $options, $name) {
  switch ($name) {
    case 'uri':
      return $file-&gt;uri;
      break;
  }
}


After that, $images[0]-&gt;file-&gt;uri-&gt;value() is available as expected.