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