Index: contrib/file_styles/includes/themes/file_styles.theme.inc
===================================================================
--- contrib/file_styles/includes/themes/file_styles.theme.inc	(revision 20256)
+++ contrib/file_styles/includes/themes/file_styles.theme.inc	(working copy)
@@ -30,7 +30,7 @@
   // that need to use an image style.
   // @see http://drupal.org/node/987846#comment-3949112
   $sample_image = file_styles_preview_image();
-  $variables['object'] = file_uri_to_object($sample_image);
+  $variables['object'] = file_styles_uri_to_object($sample_image);
   $variables['field_type'] = 'file';
   return theme('styles', $variables);
 }
Index: contrib/file_styles/file_styles.module
===================================================================
--- contrib/file_styles/file_styles.module	(revision 20256)
+++ contrib/file_styles/file_styles.module	(working copy)
@@ -30,7 +30,7 @@
  */
 function file_styles_styles_filter($object, $element = NULL) {
   // Ensure we're working against the fully loaded file object.
-  $file = file_uri_to_object($object->uri);
+  $file = file_styles_uri_to_object($object->uri, TRUE);
 
   // Allow other modules to define their own file styles.
   // In general, they'll most likely want to check against the mimetype.
@@ -108,3 +108,46 @@
     ),
   );
 }
+
+/**
+  * Returns a file object which can be passed to file_save().
+  *
+  * @param $uri
+  *   A string containing the URI, path, or filename.
+  * @param $use_existing
+  *   (Optional) If TRUE and there's an existing file in the {file_managed}
+  *   table with the passed in URI, then that file object is returned.
+  *   Otherwise, a new file object is returned.
+  * @return
+  *   A file object, or FALSE on error.
+  *
+  * @see http://drupal.org/node/685818
+  */
+function file_styles_uri_to_object($uri, $use_existing = FALSE) {
+  if ($use_existing) {
+    $query = db_select('file_managed', 'f')
+      ->fields('f', array('fid'))
+      ->condition('uri', $uri)
+      ->execute()
+      ->fetchCol();
+    if (!empty($query)) {
+      $file = file_load(array_shift($query));
+    }
+  }
+  if (!isset($file)) {
+    global $user;
+    $uri = file_stream_wrapper_uri_normalize($uri);
+    $wrapper = file_stream_wrapper_get_instance_by_uri($uri);
+    $file = new StdClass;
+    $file->uid = $user->uid;
+    $file->filename = basename($uri);
+    $file->uri = $uri;
+    $file->filemime = file_get_mimetype($uri);
+    // This is gagged because some uris will not support it.
+    $file->filesize = @filesize($uri);
+    $file->timestamp = REQUEST_TIME;
+    $file->status = FILE_STATUS_PERMANENT;
+    $file->is_new = TRUE;
+  }
+  return $file;
+}
