diff --git a/src/SiteSettingsLoader.php b/src/SiteSettingsLoader.php
index 3d48442..7985aa4 100755
--- a/src/SiteSettingsLoader.php
+++ b/src/SiteSettingsLoader.php
@@ -155,22 +155,17 @@ class SiteSettingsLoader {
 
       // Exclude fields on the object that are base config.
       if (!method_exists(get_class($field_definition), 'isBaseField') || !$field_definition->isBaseField()) {
-        if ($value = $field->getValue()) {
-
-          // Store the values in as flat a way as possible based on what is set.
-          if (count($value) <= 1) {
-            $item = reset($value);
-            if (count(reset($value)) <= 1) {
-              $build[$key] = reset($item);
-            }
-            else {
-              $build[$key] = $item;
-            }
-          }
-          else {
-            $build[$key] = $value;
-          }
 
+        if ($value = $this->getValue($field_definition, $field)) {
+          $build[$key] = $value;
+
+          // Add supplementary data to some field types.
+          switch ($field_definition->getType()) {
+            case 'image':
+            case 'file':
+              $build[$key] = $this->addSupplementaryImageData($build[$key], $field);
+              break;
+          }
         }
       }
     }
@@ -178,6 +173,75 @@ class SiteSettingsLoader {
   }
 
   /**
+   * Get the value for the particular field item.
+   *
+   * @param object $field_definition
+   *   The field definition.
+   * @param object $field
+   *   The field object.
+   *
+   * @return bool|array
+   *   The value or false.
+   */
+  private function getValue($field_definition, $field) {
+    if ($value = $field->getValue()) {
+
+      // Store the values in as flat a way as possible based on what is set.
+      if (count($value) <= 1) {
+        $item = reset($value);
+        if (count($item) <= 1) {
+          return reset($item);
+        }
+        else {
+          return $item;
+        }
+      }
+      else {
+        return $value;
+      }
+    }
+    return FALSE;
+  }
+
+  /**
+   * Add supplementary image data to the site settings.
+   *
+   * @param array $data
+   *   The existing data.
+   * @param object $field
+   *   The field object.
+   *
+   * @return array
+   *   The data with the new supplementary information included.
+   */
+  private function addSupplementaryImageData($data, $field) {
+    if ($entities = $field->referencedEntities()) {
+      if (count($entities) > 1) {
+
+        // If multiple images add data to each.
+        foreach ($data as $key => $sub_image_data) {
+          $data[$key]['filename'] = $entities[$key]->getFilename();
+          $data[$key]['uri'] = $entities[$key]->getFileUri();
+          $data[$key]['mime_type'] = $entities[$key]->getMimeType();
+          $data[$key]['size'] = $entities[$key]->getSize();
+          $data[$key]['is_permanent'] = $entities[$key]->isPermanent();
+        }
+      }
+      else {
+
+        // Add the entity to the image.
+        $entity = reset($entities);
+        $data['filename'] = $entity->getFilename();
+        $data['uri'] = $entity->getFileUri();
+        $data['mime_type'] = $entity->getMimeType();
+        $data['size'] = $entity->getSize();
+        $data['is_permanent'] = $entity->isPermanent();
+      }
+    }
+    return $data;
+  }
+
+  /**
    * Create a lowercase key with no spaces from the fieldset label.
    *
    * @param string $fieldset
