summaryrefslogtreecommitdiff
path: root/django/core/files
diff options
context:
space:
mode:
authorArthur Koziel <arthur@arthurkoziel.com>2010-09-13 00:04:27 +0000
committerArthur Koziel <arthur@arthurkoziel.com>2010-09-13 00:04:27 +0000
commitdd49269c7db008b2567f50cb03c4d3d9b321daa1 (patch)
tree326dd25bb045ac016cda7966b43cbdfe1f67d699 /django/core/files
parentc9b188c4ec939abbe48dae5a371276742e64b6b8 (diff)
downloaddjango-soc2010/app-loading.tar.gz
[soc2010/app-loading] merged trunkarchive/soc2010/app-loadingsoc2010/app-loading
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/app-loading@13818 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/core/files')
-rw-r--r--django/core/files/images.py19
1 files changed, 12 insertions, 7 deletions
diff --git a/django/core/files/images.py b/django/core/files/images.py
index 55008b548a..228a7118c5 100644
--- a/django/core/files/images.py
+++ b/django/core/files/images.py
@@ -23,23 +23,26 @@ class ImageFile(File):
if not hasattr(self, '_dimensions_cache'):
close = self.closed
self.open()
- self._dimensions_cache = get_image_dimensions(self)
- if close:
- self.close()
+ self._dimensions_cache = get_image_dimensions(self, close=close)
return self._dimensions_cache
-def get_image_dimensions(file_or_path):
- """Returns the (width, height) of an image, given an open file or a path."""
+def get_image_dimensions(file_or_path, close=False):
+ """
+ Returns the (width, height) of an image, given an open file or a path. Set
+ 'close' to True to close the file at the end if it is initially in an open
+ state.
+ """
# Try to import PIL in either of the two ways it can end up installed.
try:
from PIL import ImageFile as PILImageFile
except ImportError:
import ImageFile as PILImageFile
-
+
p = PILImageFile.Parser()
- close = False
if hasattr(file_or_path, 'read'):
file = file_or_path
+ file_pos = file.tell()
+ file.seek(0)
else:
file = open(file_or_path, 'rb')
close = True
@@ -55,3 +58,5 @@ def get_image_dimensions(file_or_path):
finally:
if close:
file.close()
+ else:
+ file.seek(file_pos)