Did you check the ticket #11158? The problem looks to be similar. http://code.djangoproject.com/ticket/11158
-- Sergio Oliveira If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization. On Fri, Jul 17, 2009 at 20:41, Fredz./ <[email protected]> wrote: > > Here's some little benchmarks i've done. > Not very fancy benchmarks, but tests: > > 3.5 meg image: > (old code): fast > (new code) : fast > > 35 meg image: > (old code) : 1h30m or so.. (depending on the cpu, it could take > about 10 minutes on a good cpu) > (new code): 5-10 seconds (on the same old CPU that took 1.5 hours to > process). > > I've done the test multiple times to make sure the image didn't get > cached in some way. > > Cheers, > Fredz./ > > On Jul 17, 2:04 pm, "Fredz./" <[email protected]> wrote: > > I have a model that has a ImageField, and I uploaded a sample image of > > 35 megs. This image will be used at different places and resized for > > those different purposes. > > > > I noticed that the django.core.files.images --> get_image_dimensions > > seems to be slow. > > It took more than an hour and a half to process that image by > > get_image_dimensions (I suspect the read(1024) being the cause) > > > > So, i decided to attempt to optimize it. > > > > Warning: I'm really not good in Python, so suggestions are welcome. > > The code is inspired by django.forms.fields.ImageField > > > > Here's the code. PS: I'm not going to create a patch, because I really > > don't know how to. I do welcome anyone using this to create a patch > > tho! :) > > > > def get_image_dimensions(file_or_path): > > """Returns the (width, height) of an image, given an open file or > > a path.""" > > from PIL import ImageFile as PILImageFile > > from PIL import Image > > p = PILImageFile.Parser() > > > > """ > > NEW > > """ > > > > if hasattr(file_or_path, 'read'): > > file = StringIO(file_or_path.read()) > > else: > > file = open(file_or_path, 'rb') > > file = StringIO(file.read()) > > try: > > trial_image = Image.open(file) > > trial_image.load() > > if hasattr(file, 'reset'): > > file.reset() > > if trial_image: > > return trial_image.size > > > > except ImportError: > > raise > > > > return None > > > > """ > > OLD > > """ > > """ > > if hasattr(file_or_path, 'read'): > > file = file_or_path > > else: > > file = open(file_or_path, 'rb') > > while 1: > > data = file.read(1024) > > if not data: > > break > > p.feed(data) > > if p.image: > > return p.image.size > > return None > > """ > > > > Please let me know what you think of the change. > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/django-developers?hl=en -~----------~----~----~----~------~----~------~--~---
