Hello, I'm still a bit new to all of this, and am extremely happy with PIL.
However, I'm ending up with a slight memory issue. I'm converting large tif
files (ranging from 400 - 1500 mb in size) to much smaller jpg files, in
large batches. I open the tif file, resize it, and convert it to jpg. I
then use the garbagecollector module in python to clear the memory.
However, after running 30-40 of these files through the script, it fails on
me, with a MemoryError. The script is attached. I'm curious if you might
have any information, tips, or advice that would assist me in getting it to
work.
--
~Shaun
## First we import the image library, Image object, and garbage
## collector, as well as os
from PIL import Image
import gc, os
## Get the path for the directory to be converted, then change to that path
print "Please enter the path to the files that you wish to convert."
path = raw_input()
os.chdir(path)
## For each file in every subdirectory, see if it's a tif file
for root, dir, files in os.walk(path):
for name in files:
filename, ext = os.path.splitext(name)
if ext == ".tif":
print 'Opening ' + name
os.chdir(path)
im = Image.open(root + '/' + name)
x, y = im.size
## Resize the tiff tile at a 2/3 scale. Make a new directory to
## mimic the file heiarchy of the original file, only on the C
## drive instead of wherever it was to begin with.
print 'Resizing'
im2 = im.resize((int(x*.66), int(y*.66)), Image.ANTIALIAS)
n = 'c' + root[1:]
savedfile = n +"/jpegs/"
try:
os.makedirs(savedfile)
os.chdir(savedfile)
except WindowsError:
os.chdir(savedfile)
savedfile = filename + ".jpg"
## Save the file as a jpg, with a high quality
print 'Saving'
im2.save(savedfile, quality=85)
del im
del im2
## Force a memory dump. Otherwise memory will get cluttered
## up, very quickly too.
gc.collect()
print 'Memory Wiped'
_______________________________________________
Image-SIG maillist - [email protected]
http://mail.python.org/mailman/listinfo/image-sig