[Image-SIG] What is the best way to anti-alias a very large resolution image in PIL

Kevin Cazabon kevin at cazabon.com
Tue Sep 13 20:27:16 CEST 2011

If its a memory issue like people have suggested, then it's still possible to do.  You could break the image into chunks, resize those, then re-assemble them.  The .tile attribute will help you.  I've personally worked with files up to about 1.5GB with PIL successfully - even on a 600mHz computer with only 2GB of RAM (back in about 2000), but I'm not sure where the limit actually is, if any.

I'm looking for a good code sample to show you how to use the .tile attribute for this, but can't find any yet… the attached is pretty cryptic and horrible coding (from my "early" years :) with little useful documentation.  Fredrik really helped me understand it back then, so if you search the newsgroup archives for ".tile" you should probably find something useful.

You'd have to do something like:

1)  open the image
2)  modify the .tile attribute so that you're only working with a portion of the image (that you can handle in memory)
3)  resize the image
4)  save that portion of the image
5)  repeat the above for all sections of the image
6)  load them all and paste the resized ones back into one smaller image

I'd suggest that you have a bit of overlap in the files though, or you'll have artifacts where you paste them together.  This is due to the resampling errors right at the edge of an image.

Good luck!


On Sep 8, 2011, at 7:07 AM, Craig Coleman (C) wrote:

> Hi,
> I have a really thorny problem.
> I need to downsample a raster map that is 23622x23622 pixels to 7874x7874 pixels using the ANTIALIAS filter.
> I have the following Python code:
> >>> import Image 
> >>> img = Image.open(r"C:\temp\24bit_nd.tif") 
> >>> nimg = img.resize((7874,7874),Image.ANTIALIAS)
> As soon as the resize method is called, python crashes instantly.  I presume this is a memory allocation issue.
> Is there another way of performing anti-aliasing on such a large image (its 2.7GB uncompressed although I'm using LZW for storage).
> I have tried converting the file to 8bit with a palette and this successfully downsamples but the ANTIALIAS is not performed.  What am I doing wrong?
> Craig Coleman 
> Technical Lead
> Information Systems, Ordnance Survey
> L0F2, Adanac Drive, SOUTHAMPTON, United Kingdom, SO16 0AS
> Phone: +44 (0) 2380 054641
> www.ordnancesurvey.co.uk | craig.coleman at ordnancesurvey.co.uk 
> Please consider your environmental responsibility before printing this email.
> This email is only intended for the person to whom it is addressed and may contain confidential information. If you have received this email in error, please notify the sender and delete this email which must not be copied, distributed or disclosed to any other person.
> Unless stated otherwise, the contents of this email are personal to the writer and do not represent the official view of Ordnance Survey. Nor can any contract be formed on Ordnance Survey's behalf via email. We reserve the right to monitor emails and attachments without prior notice.
> Thank you for your cooperation.
> Ordnance Survey
> Adanac Drive
> Southampton SO16 0AS
> Tel: 08456 050505
> http://www.ordnancesurvey.co.uk
> _______________________________________________
> Image-SIG maillist  -  Image-SIG at python.org
> http://mail.python.org/mailman/listinfo/image-sig

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/image-sig/attachments/20110913/e149950e/attachment-0002.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: build_image.py
Type: text/x-python-script
Size: 3205 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/image-sig/attachments/20110913/e149950e/attachment-0001.bin>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/image-sig/attachments/20110913/e149950e/attachment-0003.html>

More information about the Image-SIG mailing list