Skip to content

Upgrading pillow 1 to 2

Breaking1.7.8 → 2.9.0Breaking6Security11Platform1New54Changed45Fixed100Other47

BreakingUpgrade verdict

6 breaking changes and a platform requirement change and 11 security fixes.

  • Pillow no longer works with very old Tk versions.
  • Pillow no longer builds against the very old FreeType 2.0 library.
  • Reading or writing the old ARG image format is no longer supported.
  • Code passing TIFF tags by name with spaces must switch to underscores.
Top 5 of 18 that need code or config changes
Breaking6
Removes support for Tk versions earlier than 8.4.
Tk
Removes support for FreeType 2.0.
FreeType
Removes obsolete Animated Raster Graphics (ARG) support.
ARG
Uses underscores instead of spaces in TIFF tag keyword arguments.
Replaces the Gaussian Blur implementation with iterated fast box blur; the radius parameter is interpreted differently than before.
Moves everything under the PIL namespace.
PIL
Security11
Fixes CVE-2014-9601, a potential PNG decompression denial of service.
Fixes CVE-2014-9601, a potential PNG decompression denial of service.
Fixes CVE-2014-3598, a denial of service in the Jpeg2KImagePlugin (backport).
Jpeg2KImagePlugin
Prevents shell injection.
Adds decompression bomb protection.
Python Image Library (PIL) 1.1.7 and earlier and Pillow 2.3 might allow remote attackers to execute arbitrary commands via shell metacharacters in unspecified vectors related to CVE-2014-1932, possibly JpegImagePlugin.py.
Fixes a denial of service with invalid palette size or invalid image size in BMP files.
Fixes CVE-2014-3589, a denial of service in the IcnsImagePlugin (backport).
IcnsImagePlugin
Fixes insecure use of tempfile.mktemp (CVE-2014-1932, CVE-2014-1933).
tempfile.mktemp
Stops leaking the filename parameter passed to getfont.
getfont
Quotes filenames and title before using them on the command line.
Platform1
Adds Python 3 support; Pillow 2.0.0 supports Python 2.6, 2.7, 3.2 and 3.3, while earlier versions supported Python 2.4 to 2.7.

Generated by DepDelta from published Python source. Not mixed with prose notes.

  • added: variable PILLOW_VERSION
  • added: variable VERSION
  • added: class BdfFontFile(FontFile.FontFile)
  • added: constructor BdfFontFile(fp)
  • added: function bdf_char(f)
  • added: variable bdf_slant
  • added: variable bdf_spacing
  • removed: function i16(c)
  • removed: function i32(c)
  • removed: function o16(i)
  • removed: function o32(i)
  • added: field BmpImageFile.BITFIELDS
  • added: field BmpImageFile.COMPRESSIONS
  • added: field BmpImageFile.JPEG
  • added: field BmpImageFile.PNG
  • added: field BmpImageFile.RAW
  • added: field BmpImageFile.RLE4
  • added: field BmpImageFile.RLE8
  • added: variable i16
  • added: variable i32
  • added: variable i8
  • added: variable o16
  • added: variable o32
  • added: variable o8
  • changed: class ContainerIO → class ContainerIO(object)
  • added: class CurImageFile(BmpImagePlugin.BmpImageFile)
  • added: field CurImageFile.format
  • added: field CurImageFile.format_description
  • added: variable i16
  • added: variable i32
  • added: variable i8
  • added: class DcxImageFile(PcxImageFile)
  • added: field DcxImageFile.format
  • added: field DcxImageFile.format_description
  • added: method DcxImageFile.seek(frame)
  • added: method DcxImageFile.tell()
  • added: property DcxImageFile.is_animated
  • added: property DcxImageFile.n_frames
  • added: variable MAGIC
  • added: variable i32
  • added: class EpsImageFile(ImageFile.ImageFile)
  • added: class PSFile(object)
  • added: constructor PSFile(fp)
  • added: field EpsImageFile.format
  • added: field EpsImageFile.format_description
  • added: field EpsImageFile.mode_map
  • added: function Ghostscript(tile, size, fp, scale=…)
  • added: function has_ghostscript()
  • added: method EpsImageFile.load(scale=…)
  • added: method EpsImageFile.load_seek(*args, **kwargs)
  • added: method PSFile.readline()
  • added: method PSFile.seek(offset, whence=…)
  • added: variable field
  • added: variable gs_windows_binary
  • added: variable i32
  • added: variable o32
  • added: variable split
  • added: variable which
  • added: class FliImageFile(ImageFile.ImageFile)
  • added: field FliImageFile.format
  • added: field FliImageFile.format_description
  • added: method FliImageFile.seek(frame)
  • added: method FliImageFile.tell()
  • added: property FliImageFile.is_animated
  • added: property FliImageFile.n_frames
  • added: variable i16
  • added: variable i32
  • added: variable i8
  • added: variable o8
  • removed: field FontFile.save
  • removed: method FontFile.save1(filename)
  • removed: method FontFile.save2(filename)
  • removed: variable zlib
  • changed: class FontFile → class FontFile(object)
  • added: method FontFile.save(filename)
  • added: class FpxImageFile(ImageFile.ImageFile)
  • added: field FpxImageFile.format
  • added: field FpxImageFile.format_description
  • added: method FpxImageFile.load()
  • added: variable MODES
  • added: class GbrImageFile(ImageFile.ImageFile)
  • added: field GbrImageFile.format
  • added: field GbrImageFile.format_description
  • added: method GbrImageFile.load()
  • added: variable i32
  • removed: function i16(c)
  • added: variable builtins
  • added: variable i16
  • added: class GifImageFile(ImageFile.ImageFile)
  • added: field GifImageFile.format
  • added: field GifImageFile.format_description
  • added: field GifImageFile.global_palette
  • added: function get_interlace(im)
  • added: function getdata(im, offset=…, **params)
  • added: function getheader(im, palette=…, info=…)
  • added: method GifImageFile.data()
  • added: method GifImageFile.load_end()
  • added: method GifImageFile.seek(frame)
  • added: method GifImageFile.tell()
  • added: property GifImageFile.is_animated
  • added: property GifImageFile.n_frames
  • added: variable RAWMODE
  • added: variable i16
  • added: variable i8
  • added: variable o16
  • added: variable o8
  • added: class GimpGradientFile(GradientFile)
  • added: class GradientFile(object)
  • added: constructor GimpGradientFile(fp)
  • added: field GradientFile.gradient
  • added: function curved(middle, pos)
  • added: function linear(middle, pos)
  • added: function sine(middle, pos)
  • added: function sphere_decreasing(middle, pos)
  • added: function sphere_increasing(middle, pos)
  • added: method GradientFile.getpalette(entries=…)
  • added: variable EPSILON
  • added: variable SEGMENTS
  • added: class GimpPaletteFile(object)
  • added: constructor GimpPaletteFile(fp)
  • added: field GimpPaletteFile.rawmode
  • added: method GimpPaletteFile.getpalette()
  • added: class IcnsFile(object)
  • added: class IcnsImageFile(ImageFile.ImageFile)
  • added: constructor IcnsFile(fobj)
  • added: field IcnsFile.SIZES
  • added: field IcnsImageFile.format
  • added: field IcnsImageFile.format_description
  • added: function nextheader(fobj)
  • added: function read_32(fobj, start_length, size)
  • added: function read_32t(fobj, start_length, size)
  • added: function read_mk(fobj, start_length, size)
  • added: function read_png_or_jpeg2000(fobj, start_length, size)
  • added: method IcnsFile.bestsize()
  • added: method IcnsFile.dataforsize(size)
  • added: method IcnsFile.getimage(size=…)
  • added: method IcnsFile.itersizes()
  • added: method IcnsImageFile.load()
  • added: variable HEADERSIZE
  • added: variable enable_jpeg2k
  • added: variable i8
  • added: variable im
  • added: variable imf
  • added: class IcoFile(object)
  • added: class IcoImageFile(ImageFile.ImageFile)
  • added: constructor IcoFile(buf)
  • added: field IcoImageFile.format
  • added: field IcoImageFile.format_description
  • added: method IcoFile.frame(idx)
  • added: method IcoFile.getimage(size, bpp=…)
  • added: method IcoFile.sizes()
  • added: method IcoImageFile.load()
  • added: method IcoImageFile.load_seek()
  • added: variable i16
  • added: variable i32
  • added: variable i8
  • added: class ImImageFile(ImageFile.ImageFile)
  • added: field ImImageFile.format
  • added: field ImImageFile.format_description
  • added: function number(s)
  • added: method ImImageFile.seek(frame)
  • added: method ImImageFile.tell()
  • added: property ImImageFile.is_animated
  • added: property ImImageFile.n_frames
  • added: variable COMMENT
  • added: variable DATE
  • added: variable EQUIPMENT
  • added: variable FRAMES
  • added: variable LUT
  • added: variable MODE
  • added: variable NAME
  • added: variable OPEN
  • added: variable SAVE
  • added: variable SCALE
  • added: variable SIZE
  • added: variable TAGS
  • added: variable split
  • added: class DecompressionBombWarning(RuntimeWarning)
  • added: class Image(object)
  • added: class ImagePointHandler(object)
  • added: class ImageTransformHandler(object)
  • added: constructor Image()
  • added: field Image.format
  • added: field Image.format_description
  • added: function alpha_composite(im1, im2)
  • added: function blend(im1, im2, alpha)
  • added: function coerce_e(value)
  • added: function composite(image1, image2, mask)
  • added: function effect_mandelbrot(size, extent, quality)
  • added: function effect_noise(size, sigma)
  • added: function eval(image, *args)
  • added: function fromarray(obj, mode=…)
  • added: function frombuffer(mode, size, data, decoder_name=…, *args)
  • added: function frombytes(mode, size, data, decoder_name=…, *args)
  • added: function fromqimage(im)
  • added: function fromqpixmap(im)
  • added: function fromstring(*args, **kw)
  • added: function getmodebandnames(mode)
  • added: function getmodebands(mode)
  • added: function getmodebase(mode)
  • added: function getmodetype(mode)
  • added: function init()
  • added: function isImageType(t)
  • added: function merge(mode, bands)
  • added: function new(mode, size, color=…)
  • added: function open(fp, mode=…)
  • added: function preinit()
  • added: function register_extension(id, extension)
  • added: function register_mime(id, mimetype)
  • added: function register_open(id, factory, accept=…)
  • added: function register_save(id, driver)
  • added: function register_save_all(id, driver)
  • added: method Image.close()
  • added: method Image.convert(mode=…, matrix=…, dither=…, palette=…, colors=…)
  • added: method Image.copy()
  • added: method Image.crop(box=…)
  • added: method Image.draft(mode, size)
  • added: method Image.effect_spread(distance)
  • added: method Image.filter(filter)
  • added: method Image.frombytes(data, decoder_name=…, *args)
  • added: method Image.fromstring(*args, **kw)
  • added: method Image.getbands()
  • added: method Image.getbbox()
  • added: method Image.getcolors(maxcolors=…)
  • added: method Image.getdata(band=…)
  • added: method Image.getextrema()
  • added: method Image.getim()
  • added: method Image.getpalette()
  • added: method Image.getpixel(xy)
  • added: method Image.getprojection()
  • added: method Image.histogram(mask=…, extrema=…)
  • added: method Image.load()
  • added: method Image.offset(xoffset, yoffset=…)
  • added: method Image.paste(im, box=…, mask=…)
  • added: method Image.point(lut, mode=…)
  • added: method Image.putalpha(alpha)
  • added: method Image.putdata(data, scale=…, offset=…)
  • added: method Image.putpalette(data, rawmode=…)
  • added: method Image.putpixel(xy, value)
  • added: method Image.quantize(colors=…, method=…, kmeans=…, palette=…)
  • added: method Image.resize(size, resample=…)
  • added: method Image.rotate(angle, resample=…, expand=…)
  • added: method Image.save(fp, format=…, **params)
  • added: method Image.seek(frame)
  • added: method Image.show(title=…, command=…)
  • added: method Image.split()
  • added: method Image.tell()
  • added: method Image.thumbnail(size, resample=…)
  • added: method Image.tobitmap(name=…)
  • added: method Image.tobytes(encoder_name=…, *args)
  • added: method Image.toqimage()
  • added: method Image.toqpixmap()
  • added: method Image.tostring(*args, **kw)
  • added: method Image.transform(size, method, data=…, resample=…, fill=…)
  • added: method Image.transpose(method)
  • added: method Image.verify()
  • added: property Image.height
  • added: property Image.width
  • added: variable ADAPTIVE
  • added: variable AFFINE
  • added: variable ANTIALIAS
  • added: variable BICUBIC
  • added: variable BILINEAR
  • added: variable CONTAINER
  • added: variable CUBIC
  • added: variable DEBUG
  • added: variable DEFAULT_STRATEGY
  • added: variable EXTENSION
  • added: variable EXTENT
  • added: variable FASTOCTREE
  • added: variable FILTERED
  • added: variable FIXED
  • added: variable FLIP_LEFT_RIGHT
  • added: variable FLIP_TOP_BOTTOM
  • added: variable FLOYDSTEINBERG
  • added: variable HAS_CFFI
  • added: variable HUFFMAN_ONLY
  • added: variable ID
  • added: variable LANCZOS
  • added: variable LINEAR
  • added: variable MAXCOVERAGE
  • added: variable MAX_IMAGE_PIXELS
  • added: variable MEDIANCUT
  • added: variable MESH
  • added: variable MIME
  • added: variable MODES
  • added: variable NEAREST
  • added: variable NONE
  • added: variable NORMAL
  • added: variable OPEN
  • added: variable ORDERED
  • added: variable PERSPECTIVE
  • added: variable QUAD
  • added: variable RASTERIZE
  • added: variable RLE
  • added: variable ROTATE_180
  • added: variable ROTATE_270
  • added: variable ROTATE_90
  • added: variable SAVE
  • added: variable SAVE_ALL
  • added: variable SEQUENCE
  • added: variable TRANSPOSE
  • added: variable USE_CFFI_ACCESS
  • added: variable WEB
  • added: variable builtins
  • added: variable core
  • added: class ImageCmsProfile(object)
  • added: class ImageCmsTransform(Image.ImagePointHandler)
  • added: class PyCMSError(Exception)
  • added: constructor ImageCmsProfile(profile)
  • added: constructor ImageCmsTransform(input, output, input_mode, output_mode, intent=…, proof=…, proof_intent=…, flags=…)
  • added: function applyTransform(im, transform, inPlace=…)
  • added: function buildProofTransform(inputProfile, outputProfile, proofProfile, inMode, outMode, renderingIntent=…, proofRenderingIntent=…, flags=…)
  • added: function buildTransform(inputProfile, outputProfile, inMode, outMode, renderingIntent=…, flags=…)
  • added: function createProfile(colorSpace, colorTemp=…)
  • added: function getDefaultIntent(profile)
  • added: function getOpenProfile(profileFilename)
  • added: function getProfileCopyright(profile)
  • added: function getProfileDescription(profile)
  • added: function getProfileInfo(profile)
  • added: function getProfileManufacturer(profile)
  • added: function getProfileModel(profile)
  • added: function getProfileName(profile)
  • added: function get_display_profile(handle=…)
  • added: function isIntentSupported(profile, intent, direction)
  • added: function profileToProfile(im, inputProfile, outputProfile, renderingIntent=…, outputMode=…, inPlace=…, flags=…)
  • added: function versions()
  • added: method ImageCmsProfile.tobytes()
  • added: method ImageCmsTransform.apply(im, imOut=…)
  • added: method ImageCmsTransform.apply_in_place(im)
  • added: method ImageCmsTransform.point(im)
  • added: variable DESCRIPTION
  • added: variable DIRECTION_INPUT
  • added: variable DIRECTION_OUTPUT
  • added: variable DIRECTION_PROOF
  • added: variable FLAGS
  • added: variable INTENT_ABSOLUTE_COLORIMETRIC
  • added: variable INTENT_PERCEPTUAL
  • added: variable INTENT_RELATIVE_COLORIMETRIC
  • added: variable INTENT_SATURATION
  • added: variable VERSION
  • added: variable buildProofTransformFromOpenProfiles
  • added: variable buildTransformFromOpenProfiles
  • added: variable core
  • removed: variable str2int
  • removed: variable x
  • changed: class ImageDraw → class ImageDraw(object)
  • added: method ImageDraw.multiline_text(xy, text, fill=…, font=…, anchor=…, spacing=…, align=…)
  • added: method ImageDraw.multiline_textsize(text, font=…, spacing=…)
  • added: class Brush(object)
  • added: class Draw(object)
  • added: class Font(object)
  • added: class Pen(object)
  • added: constructor Brush(color, opacity=…)
  • added: constructor Draw(image, size=…, color=…)
  • added: constructor Font(color, file, size=…)
  • added: constructor Pen(color, width=…, opacity=…)
  • added: method Draw.arc(xy, start, end, *options)
  • added: method Draw.chord(xy, start, end, *options)
  • added: method Draw.ellipse(xy, *options)
  • added: method Draw.flush()
  • added: method Draw.line(xy, *options)
  • added: method Draw.pieslice(xy, start, end, *options)
  • added: method Draw.polygon(xy, *options)
  • added: method Draw.rectangle(xy, *options)
  • added: method Draw.render(op, xy, pen, brush=…)
  • added: method Draw.settransform(offset)
  • added: method Draw.symbol(xy, symbol, *options)
  • added: method Draw.text(xy, text, font)
  • added: method Draw.textsize(text, font)
  • added: class ImageFile(Image.Image)
  • added: class Parser(object)
  • added: class StubImageFile(ImageFile)
  • added: constructor ImageFile(fp=…, filename=…)
  • added: field Parser.data
  • added: field Parser.decoder
  • added: field Parser.finished
  • added: field Parser.image
  • added: field Parser.incremental
  • added: field Parser.offset
  • added: function raise_ioerror(error)
  • added: method ImageFile.draft(mode, size)
  • added: method ImageFile.load()
  • added: method ImageFile.load_end()
  • added: method ImageFile.load_prepare()
  • added: method ImageFile.verify()
  • added: method Parser.close()
  • added: method Parser.feed(data)
  • added: method Parser.reset()
  • added: method StubImageFile.load()
  • added: variable ERRORS
  • added: variable LOAD_TRUNCATED_IMAGES
  • added: variable MAXBLOCK
  • added: variable SAFEBLOCK
  • changed: class ImageFileIO(StringIO) → class ImageFileIO(BytesIO)
  • changed: class Filter → class Filter(object)
  • added: class FreeTypeFont(object)
  • added: class ImageFont(object)
  • added: class TransposedFont(object)
  • added: constructor FreeTypeFont(font=…, size=…, index=…, encoding=…, file=…)
  • added: constructor TransposedFont(font, orientation=…)
  • added: function load(filename)
  • added: function load_default()
  • added: function load_path(filename)
  • added: function truetype(font=…, size=…, index=…, encoding=…, filename=…)
  • added: method FreeTypeFont.font_variant(font=…, size=…, index=…, encoding=…)
  • added: method FreeTypeFont.getmask(text, mode=…)
  • added: method FreeTypeFont.getmask2(text, mode=…, fill=…)
  • added: method FreeTypeFont.getmetrics()
  • added: method FreeTypeFont.getname()
  • added: method FreeTypeFont.getoffset(text)
  • added: method FreeTypeFont.getsize(text)
  • added: method TransposedFont.getmask(text, mode=…)
  • added: method TransposedFont.getsize(text)
  • added: variable core
  • added: variable warnings
  • removed: class TextureFactory
  • added: function eval(expression, _dict=…, **kw)
  • added: function imagemath_convert(self, mode)
  • added: function imagemath_equal(self, other)
  • added: function imagemath_float(self)
  • added: function imagemath_int(self)
  • added: function imagemath_max(self, other)
  • added: function imagemath_min(self, other)
  • added: function imagemath_notequal(self, other)
  • added: variable VERBOSE
  • added: variable builtins
  • added: variable ops
  • changed: class ModeDescriptor → class ModeDescriptor(object)
  • added: class LutBuilder(object)
  • added: class MorphOp(object)
  • added: constructor LutBuilder(patterns=…, op_name=…)
  • added: constructor MorphOp(lut=…, op_name=…, patterns=…)
  • added: method LutBuilder.add_patterns(patterns)
  • added: method LutBuilder.build_default_lut()
  • added: method LutBuilder.build_lut()
  • added: method LutBuilder.get_lut()
  • added: method MorphOp.apply(image)
  • added: method MorphOp.get_on_pixels(image)
  • added: method MorphOp.load_lut(filename)
  • added: method MorphOp.match(image)
  • added: method MorphOp.save_lut(filename)
  • added: method MorphOp.set_lut(lut)
  • added: variable LUT_SIZE
  • added: function autocontrast(image, cutoff=…, ignore=…)
  • added: function box_blur(image, radius)
  • added: function colorize(image, black, white)
  • added: function crop(image, border=…)
  • added: function deform(image, deformer, resample=…)
  • added: function equalize(image, mask=…)
  • added: function expand(image, border=…, fill=…)
  • added: function fit(image, size, method=…, bleed=…, centering=…)
  • added: function flip(image)
  • added: function gaussian_blur(im, radius=…)
  • added: function grayscale(image)
  • added: function invert(image)
  • added: function mirror(image)
  • added: function posterize(image, bits)
  • added: function solarize(image, threshold=…)
  • added: function unsharp_mask(im, radius=…, percent=…, threshold=…)
  • added: variable gblur
  • added: variable usm
  • added: class ImagePalette(object)
  • added: constructor ImagePalette(mode=…, palette=…, size=…)
  • added: field ImagePalette.tostring
  • added: function load(filename)
  • added: function make_gamma_lut(exp)
  • added: function make_linear_lut(black, white)
  • added: function negative(mode=…)
  • added: function random(mode=…)
  • added: function raw(rawmode, data)
  • added: function sepia(white=…)
  • added: function wedge(mode=…)
  • added: method ImagePalette.copy()
  • added: method ImagePalette.getcolor(color)
  • added: method ImagePalette.getdata()
  • added: method ImagePalette.save(fp)
  • added: method ImagePalette.tobytes()
  • changed: class Path → class Path(object)
  • changed: function rgb(r, g, b) → function rgb(r, g, b, a=…)
  • added: function fromqimage(im)
  • added: function fromqpixmap(im)
  • added: function toqimage(im)
  • added: function toqpixmap(im)
  • added: variable qt_is_installed
  • added: variable qt_version
  • changed: class Iterator → class Iterator(object)
  • added: class DisplayViewer(UnixViewer)
  • added: class MacViewer(Viewer)
  • added: class UnixViewer(Viewer)
  • added: class Viewer(object)
  • added: class WindowsViewer(Viewer)
  • added: class XVViewer(UnixViewer)
  • added: field MacViewer.format
  • added: field Viewer.format
  • added: field WindowsViewer.format
  • added: function register(viewer, order=…)
  • added: function show(image, title=…, **options)
  • added: function which(executable)
  • added: method DisplayViewer.get_command_ex(file, **options)
  • added: method MacViewer.get_command(file, **options)
  • added: method UnixViewer.show_file(file, **options)
  • added: method Viewer.get_command(file, **options)
  • added: method Viewer.get_format(image)
  • added: method Viewer.save_image(image)
  • added: method Viewer.show(image, **options)
  • added: method Viewer.show_file(file, **options)
  • added: method Viewer.show_image(image, **options)
  • added: method WindowsViewer.get_command(file, **options)
  • added: method XVViewer.get_command_ex(file, title=…, **options)
  • added: class Stat(object)
  • added: constructor Stat(image_or_list, mask=…)
  • added: variable Global
  • added: class BitmapImage(object)
  • added: class PhotoImage(object)
  • added: constructor BitmapImage(image=…, **kw)
  • added: constructor PhotoImage(image=…, size=…, **kw)
  • added: function getimage(photo)
  • added: method BitmapImage.height()
  • added: method BitmapImage.width()
  • added: method PhotoImage.height()
  • added: method PhotoImage.paste(im, box=…)
  • added: method PhotoImage.width()
  • added: variable tkinter
  • changed: class Dib → class Dib(object)
  • changed: class HDC → class HDC(object)
  • changed: class HWND → class HWND(object)
  • changed: class Window → class Window(object)
  • changed: method Dib.fromstring(buffer) → method Dib.fromstring(*args, **kw)
  • added: method Dib.frombytes(buffer)
  • added: method Dib.tobytes()
  • added: class ImtImageFile(ImageFile.ImageFile)
  • added: field ImtImageFile.format
  • added: field ImtImageFile.format_description
  • added: variable field
  • added: class IptcImageFile(ImageFile.ImageFile)
  • added: field IptcImageFile.format
  • added: field IptcImageFile.format_description
  • added: function dump(c)
  • added: function getiptcinfo(im)
  • added: function i(c)
  • added: method IptcImageFile.field()
  • added: method IptcImageFile.getint(key)
  • added: method IptcImageFile.load()
  • added: variable COMPRESSION
  • added: variable PAD
  • added: variable i16
  • added: variable i32
  • added: variable i8
  • added: variable o8
  • added: class Jpeg2KImageFile(ImageFile.ImageFile)
  • added: field Jpeg2KImageFile.format
  • added: field Jpeg2KImageFile.format_description
  • added: method Jpeg2KImageFile.load()
  • removed: function i16(c, o=…)
  • removed: function i32(c, o=…)
  • added: function convert_dict_qtables(qtables)
  • added: function get_sampling(im)
  • added: function jpeg_factory(fp=…, filename=…)
  • added: variable i16
  • added: variable i32
  • added: variable i8
  • added: variable o8
  • added: variable samplings
  • added: variable zigzag_index
  • added: variable presets
  • added: class MicImageFile(TiffImagePlugin.TiffImageFile)
  • added: field MicImageFile.format
  • added: field MicImageFile.format_description
  • added: method MicImageFile.seek(frame)
  • added: method MicImageFile.tell()
  • added: property MicImageFile.is_animated
  • added: property MicImageFile.n_frames
  • added: class BitStream(object)
  • added: class MpegImageFile(ImageFile.ImageFile)
  • added: constructor BitStream(fp)
  • added: field MpegImageFile.format
  • added: field MpegImageFile.format_description
  • added: method BitStream.next()
  • added: method BitStream.peek(bits)
  • added: method BitStream.read(bits)
  • added: method BitStream.skip(bits)
  • added: class MpoImageFile(JpegImagePlugin.JpegImageFile)
  • added: field MpoImageFile.format
  • added: field MpoImageFile.format_description
  • added: method MpoImageFile.load_seek(pos)
  • added: method MpoImageFile.seek(frame)
  • added: method MpoImageFile.tell()
  • added: property MpoImageFile.is_animated
  • added: property MpoImageFile.n_frames
  • added: class MspImageFile(ImageFile.ImageFile)
  • added: field MspImageFile.format
  • added: field MspImageFile.format_description
  • added: variable i16
  • added: variable o16
  • added: class OleFileIO(object)
  • added: class OleMetadata(object)
  • added: constructor OleFileIO(filename=…, raise_defects=…, write_mode=…, debug=…, path_encoding=…)
  • added: constructor OleMetadata()
  • added: field OleMetadata.DOCSUM_ATTRIBS
  • added: field OleMetadata.SUMMARY_ATTRIBS
  • added: function debug_pass(msg)
  • added: function debug_print(msg)
  • added: function filetime2datetime(filetime)
  • added: function i16(c, o=…)
  • added: function i32(c, o=…)
  • added: function i8(c)
  • added: function isOleFile(filename)
  • added: function set_debug_mode(debug_mode)
  • added: method OleFileIO.close()
  • added: method OleFileIO.dumpdirectory()
  • added: method OleFileIO.dumpfat(fat, firstindex=…)
  • added: method OleFileIO.dumpsect(sector, firstindex=…)
  • added: method OleFileIO.exists(filename)
  • added: method OleFileIO.get_metadata()
  • added: method OleFileIO.get_rootentry_name()
  • added: method OleFileIO.get_size(filename)
  • added: method OleFileIO.get_type(filename)
  • added: method OleFileIO.getctime(filename)
  • added: method OleFileIO.getmtime(filename)
  • added: method OleFileIO.getproperties(filename, convert_time=…, no_conversion=…)
  • added: method OleFileIO.getsect(sect)
  • added: method OleFileIO.listdir(streams=…, storages=…)
  • added: method OleFileIO.loaddirectory(sect)
  • added: method OleFileIO.loadfat(header)
  • added: method OleFileIO.loadfat_sect(sect)
  • added: method OleFileIO.loadminifat()
  • added: method OleFileIO.open(filename, write_mode=…)
  • added: method OleFileIO.openstream(filename)
  • added: method OleFileIO.raise_defect(defect_level, message, exception_type=…)
  • added: method OleFileIO.sect2array(sect)
  • added: method OleFileIO.write_sect(sect, data, padding=…)
  • added: method OleFileIO.write_stream(stream_name, data)
  • added: method OleMetadata.dump()
  • added: method OleMetadata.parse_properties(olefile)
  • added: variable DEBUG_MODE
  • added: variable DEFAULT_PATH_ENCODING
  • added: variable DEFECT_FATAL
  • added: variable DEFECT_INCORRECT
  • added: variable DEFECT_POTENTIAL
  • added: variable DEFECT_UNSURE
  • added: variable DIFSECT
  • added: variable ENDOFCHAIN
  • added: variable FATSECT
  • added: variable FREESECT
  • added: variable KEEP_UNICODE_NAMES
  • added: variable MAGIC
  • added: variable MAXREGSECT
  • added: variable MAXREGSID
  • added: variable MINIMAL_OLEFILE_SIZE
  • added: variable NOSTREAM
  • added: variable STGTY_EMPTY
  • added: variable STGTY_LOCKBYTES
  • added: variable STGTY_PROPERTY
  • added: variable STGTY_ROOT
  • added: variable STGTY_STORAGE
  • added: variable STGTY_STREAM
  • added: variable UINT32
  • added: variable VT
  • added: variable VT_BLOB
  • added: variable VT_BLOB_OBJECT
  • added: variable VT_BOOL
  • added: variable VT_BSTR
  • added: variable VT_CARRAY
  • added: variable VT_CF
  • added: variable VT_CLSID
  • added: variable VT_CY
  • added: variable VT_DATE
  • added: variable VT_DECIMAL
  • added: variable VT_DISPATCH
  • added: variable VT_EMPTY
  • added: variable VT_ERROR
  • added: variable VT_FILETIME
  • added: variable VT_HRESULT
  • added: variable VT_I1
  • added: variable VT_I2
  • added: variable VT_I4
  • added: variable VT_I8
  • added: variable VT_INT
  • added: variable VT_LPSTR
  • added: variable VT_LPWSTR
  • added: variable VT_NULL
  • added: variable VT_PTR
  • added: variable VT_R4
  • added: variable VT_R8
  • added: variable VT_SAFEARRAY
  • added: variable VT_STORAGE
  • added: variable VT_STORED_OBJECT
  • added: variable VT_STREAM
  • added: variable VT_STREAMED_OBJECT
  • added: variable VT_UI1
  • added: variable VT_UI2
  • added: variable VT_UI4
  • added: variable VT_UI8
  • added: variable VT_UINT
  • added: variable VT_UNKNOWN
  • added: variable VT_USERDEFINED
  • added: variable VT_VARIANT
  • added: variable VT_VECTOR
  • added: variable VT_VOID
  • added: variable WORD_CLSID
  • added: variable basestring
  • added: variable check_streams
  • added: variable debug
  • added: variable iterrange
  • added: variable long
  • added: class PSDraw(object)
  • added: constructor PSDraw(fp=…)
  • added: method PSDraw.begin_document(id=…)
  • added: method PSDraw.end_document()
  • added: method PSDraw.image(box, im, dpi=…)
  • added: method PSDraw.line(xy0, xy1)
  • added: method PSDraw.rectangle(box)
  • added: method PSDraw.setfont(font, size)
  • added: method PSDraw.text(xy, text)
  • added: variable EDROFF_PS
  • added: variable ERROR_PS
  • added: variable VDI_PS
  • added: class PaletteFile(object)
  • added: constructor PaletteFile(fp)
  • added: field PaletteFile.rawmode
  • added: method PaletteFile.getpalette()
  • added: function build_prototype_image()
  • added: variable Palm8BitColormapImage
  • added: variable o16b
  • added: variable o8
  • added: class PcdImageFile(ImageFile.ImageFile)
  • added: field PcdImageFile.format
  • added: field PcdImageFile.format_description
  • added: variable i8
  • added: class PcfFontFile(FontFile.FontFile)
  • added: constructor PcfFontFile(fp)
  • added: field PcfFontFile.name
  • added: function sz(s, o)
  • added: variable BYTES_PER_ROW
  • added: variable PCF_ACCELERATORS
  • added: variable PCF_BDF_ACCELERATORS
  • added: variable PCF_BDF_ENCODINGS
  • added: variable PCF_BITMAPS
  • added: variable PCF_GLYPH_NAMES
  • added: variable PCF_INK_METRICS
  • added: variable PCF_MAGIC
  • added: variable PCF_METRICS
  • added: variable PCF_PROPERTIES
  • added: variable PCF_SWIDTHS
  • added: variable b16
  • added: variable b32
  • added: variable i8
  • added: variable l16
  • added: variable l32
  • added: class PcxImageFile(ImageFile.ImageFile)
  • added: field PcxImageFile.format
  • added: field PcxImageFile.format_description
  • added: variable SAVE
  • added: variable i16
  • added: variable i8
  • added: variable o16
  • added: variable o8
  • added: class PixarImageFile(ImageFile.ImageFile)
  • added: field PixarImageFile.format
  • added: field PixarImageFile.format_description
  • added: variable i16
  • added: variable i32
  • added: class ChunkStream(object)
  • added: class PngImageFile(ImageFile.ImageFile)
  • added: class PngInfo(object)
  • added: class PngStream(ChunkStream)
  • added: class iTXt(str)
  • added: constructor ChunkStream(fp)
  • added: constructor PngInfo()
  • added: constructor PngStream(fp)
  • added: field PngImageFile.format
  • added: field PngImageFile.format_description
  • added: function getchunks(im, **params)
  • added: function putchunk(fp, cid, *data)
  • added: method ChunkStream.call(cid, pos, length)
  • added: method ChunkStream.close()
  • added: method ChunkStream.crc(cid, data)
  • added: method ChunkStream.crc_skip(cid, data)
  • added: method ChunkStream.push(cid, pos, length)
  • added: method ChunkStream.read()
  • added: method ChunkStream.verify(endchunk=…)
  • added: method PngImageFile.load_end()
  • added: method PngImageFile.load_prepare()
  • added: method PngImageFile.load_read(read_bytes)
  • added: method PngImageFile.verify()
  • added: method PngInfo.add(cid, data)
  • added: method PngInfo.add_itxt(key, value, lang=…, tkey=…, zip=…)
  • added: method PngInfo.add_text(key, value, zip=…)
  • added: method PngStream.check_text_memory(chunklen)
  • added: method PngStream.chunk_IDAT(pos, length)
  • added: method PngStream.chunk_IEND(pos, length)
  • added: method PngStream.chunk_IHDR(pos, length)
  • added: method PngStream.chunk_PLTE(pos, length)
  • added: method PngStream.chunk_gAMA(pos, length)
  • added: method PngStream.chunk_iCCP(pos, length)
  • added: method PngStream.chunk_iTXt(pos, length)
  • added: method PngStream.chunk_pHYs(pos, length)
  • added: method PngStream.chunk_tEXt(pos, length)
  • added: method PngStream.chunk_tRNS(pos, length)
  • added: method PngStream.chunk_zTXt(pos, length)
  • added: variable MAX_TEXT_CHUNK
  • added: variable MAX_TEXT_MEMORY
  • added: variable i16
  • added: variable i32
  • added: variable i8
  • added: variable is_cid
  • added: variable o16
  • added: variable o32
  • added: variable o8
  • added: class PpmImageFile(ImageFile.ImageFile)
  • added: field PpmImageFile.format
  • added: field PpmImageFile.format_description
  • added: variable MODES
  • added: variable b_whitespace
  • added: variable locale_enc
  • added: variable locale_lang
  • added: class PsdImageFile(ImageFile.ImageFile)
  • added: field PsdImageFile.format
  • added: field PsdImageFile.format_description
  • added: method PsdImageFile.load_prepare()
  • added: method PsdImageFile.seek(layer)
  • added: method PsdImageFile.tell()
  • added: property PsdImageFile.is_animated
  • added: property PsdImageFile.n_frames
  • added: variable MODES
  • added: variable i16
  • added: variable i32
  • added: variable i8
  • added: class PyAccess(object)
  • added: constructor PyAccess(img, readonly=…)
  • added: field PyAccess.getpixel
  • added: field PyAccess.putpixel
  • added: function new(img, readonly=…)
  • added: method PyAccess.check_xy(xy)
  • added: variable DEBUG
  • added: variable defs
  • added: variable ffi
  • added: variable mode_map
  • removed: function i16(c)
  • removed: function i32(c)
  • added: variable i16
  • added: variable i32
  • added: variable i8
  • added: class SpiderImageFile(ImageFile.ImageFile)
  • added: field SpiderImageFile.format
  • added: field SpiderImageFile.format_description
  • added: function isInt(f)
  • added: function isSpiderHeader(t)
  • added: function isSpiderImage(filename)
  • added: function loadImageSeries(filelist=…)
  • added: function makeSpiderHeader(im)
  • added: method SpiderImageFile.convert2byte(depth=…)
  • added: method SpiderImageFile.seek(frame)
  • added: method SpiderImageFile.tell()
  • added: method SpiderImageFile.tkPhotoImage()
  • added: property SpiderImageFile.is_animated
  • added: property SpiderImageFile.n_frames
  • added: variable filename
  • added: variable iforms
  • added: variable im
  • added: variable outfile
  • added: class SunImageFile(ImageFile.ImageFile)
  • added: field SunImageFile.format
  • added: field SunImageFile.format_description
  • added: variable i16
  • added: variable i32
  • added: class TarIO(ContainerIO.ContainerIO)
  • added: constructor TarIO(tarfile, file)
  • added: class TgaImageFile(ImageFile.ImageFile)
  • added: field TgaImageFile.format
  • added: field TgaImageFile.format_description
  • added: variable MODES
  • added: variable SAVE
  • added: variable i16
  • added: variable i32
  • added: variable i8
  • added: variable o16
  • added: variable o32
  • added: variable o8
  • added: class ImageFileDirectory(collections.MutableMapping)
  • added: class TiffImageFile(ImageFile.ImageFile)
  • added: constructor ImageFileDirectory(prefix=…)
  • added: field ImageFileDirectory.load_dispatch
  • added: field TiffImageFile.format
  • added: field TiffImageFile.format_description
  • added: method ImageFileDirectory.as_dict()
  • added: method ImageFileDirectory.getscalar(tag, default=…)
  • added: method ImageFileDirectory.has_key(tag)
  • added: method ImageFileDirectory.items()
  • added: method ImageFileDirectory.load(fp)
  • added: method ImageFileDirectory.load_byte(data)
  • added: method ImageFileDirectory.load_double(data)
  • added: method ImageFileDirectory.load_float(data)
  • added: method ImageFileDirectory.load_long(data)
  • added: method ImageFileDirectory.load_rational(data)
  • added: method ImageFileDirectory.load_short(data)
  • added: method ImageFileDirectory.load_string(data)
  • added: method ImageFileDirectory.load_undefined(data)
  • added: method ImageFileDirectory.named()
  • added: method ImageFileDirectory.reset()
  • added: method ImageFileDirectory.save(fp)
  • added: method TiffImageFile.seek(frame)
  • added: method TiffImageFile.tell()
  • added: property TiffImageFile.is_animated
  • added: property TiffImageFile.n_frames
  • added: variable ARTIST
  • added: variable BITSPERSAMPLE
  • added: variable COLORMAP
  • added: variable COMPRESSION
  • added: variable COMPRESSION_INFO
  • added: variable COMPRESSION_INFO_REV
  • added: variable COPYRIGHT
  • added: variable DATE_TIME
  • added: variable EXIFIFD
  • added: variable EXTRASAMPLES
  • added: variable FILLORDER
  • added: variable ICCPROFILE
  • added: variable II
  • added: variable IMAGEDESCRIPTION
  • added: variable IMAGEJ_META_DATA
  • added: variable IMAGEJ_META_DATA_BYTE_COUNTS
  • added: variable IMAGELENGTH
  • added: variable IMAGEWIDTH
  • added: variable IPTC_NAA_CHUNK
  • added: variable JPEGTABLES
  • added: variable MM
  • added: variable OPEN_INFO
  • added: variable PHOTOMETRIC_INTERPRETATION
  • added: variable PHOTOSHOP_CHUNK
  • added: variable PLANAR_CONFIGURATION
  • added: variable PREDICTOR
  • added: variable PREFIXES
  • added: variable READ_LIBTIFF
  • added: variable RESOLUTION_UNIT
  • added: variable ROWSPERSTRIP
  • added: variable SAMPLEFORMAT
  • added: variable SAMPLESPERPIXEL
  • added: variable SAVE_INFO
  • added: variable SOFTWARE
  • added: variable STRIPBYTECOUNTS
  • added: variable STRIPOFFSETS
  • added: variable TILEOFFSETS
  • added: variable WRITE_LIBTIFF
  • added: variable XMP
  • added: variable X_RESOLUTION
  • added: variable Y_RESOLUTION
  • added: variable i8
  • added: variable ib16
  • added: variable ib32
  • added: variable il16
  • added: variable il32
  • added: variable native_prefix
  • added: variable o8
  • added: variable ob16
  • added: variable ob32
  • added: variable ol16
  • added: variable ol32
  • added: function open(filename)
  • added: variable builtins
  • added: variable i32
  • added: variable im
  • added: variable quake2palette
  • added: class WebPImageFile(ImageFile.ImageFile)
  • added: field WebPImageFile.format
  • added: field WebPImageFile.format_description
  • removed: function dword(c, o=…)
  • removed: function long(c, o=…)
  • removed: function word(c, o=…)
  • changed: class WmfHandler → class WmfHandler(object)
  • added: variable dword
  • added: variable long
  • added: variable word
  • added: class XVThumbImageFile(ImageFile.ImageFile)
  • added: field XVThumbImageFile.format
  • added: field XVThumbImageFile.format_description
  • added: variable PALETTE
  • added: variable o8
  • added: class XbmImageFile(ImageFile.ImageFile)
  • added: field XbmImageFile.format
  • added: field XbmImageFile.format_description
  • added: variable xbm_head
  • added: class XpmImageFile(ImageFile.ImageFile)
  • added: field XpmImageFile.format
  • added: field XpmImageFile.format_description
  • added: method XpmImageFile.load_read(bytes)
  • added: variable xpm_head
  • added: function check_codec(feature)
  • added: function check_module(feature)
  • added: function get_supported_codecs()
  • added: function get_supported_modules()
  • added: variable codecs
  • added: variable modules