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
-~----------~----~----~----~------~----~------~--~---

Reply via email to