Python PIL “IOError: archivo de imagen truncado” con imágenes grandes

Creo que este problema no está relacionado con Zope. Sin embargo voy a explicar lo que estoy tratando de hacer:

Estoy usando un PUT_factory en Zope para cargar imágenes al ZODB por FTP. La imagen cargada se guarda como una imagen de Zope dentro de un objeto contenedor recién creado. Esto funciona bien, pero quiero cambiar el tamaño de la imagen si supera un cierto tamaño (ancho y alto). Así que estoy usando la función de miniatura de PIL para redimensionarlos, es decir, a 200x200. Esto funciona bien siempre y cuando las imágenes cargadas sean relativamente pequeñas. No revisé el límite exacto, pero 976x1296px todavía está bien.

Con imágenes más grandes me sale:

Module PIL.Image, line 1559, in thumbnail
Module PIL.ImageFile, line 201, in load
IOError: image file is truncated (nn bytes not processed).

He probado un montón de archivos JPEG de mi cámara. No creo que todos estén truncados.

Aquí está mi código:

if img and img.meta_type == 'Image':
  pilImg = PIL.Image.open( StringIO(str(img.data)) )
elif imgData:
  pilImg = PIL.Image.open( StringIO(imgData) )

pilImg.thumbnail((width, height), PIL.Image.ANTIALIAS)

Como uso un PUT_factory, no tengo un objeto de archivo, estoy usando los datos sin procesar de la fábrica o un objeto de imagen creado previamente (Zope).

He oído que PIL maneja los datos de imagen de manera diferente cuando se excede un cierto tamaño, pero no sé cómo ajustar mi código. ¿O está relacionado con la carga perezosa de PIL?

Respuestas a la pregunta(4)

Su respuesta a la pregunta