sorry, it's not the same bug...
looks like your code is removing protection of reading the file in chunks,
so you could load a huge image in the memory which is not a good idea at
all.
the best think to do is create a ticket[1].

Do you know how to use svn? if yes, the only step to generate a patch is do
"svn diff" in the root of the repository.

If you don't know svn book[2] is a good friend! ;)

[1] http://code.djangoproject.com/simpleticket
[2] http://svnbook.red-bean.com

Cheers,

--
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 21:44, Sergio Oliveira <[email protected]> wrote:

> 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