Skip to content

Upgrading pillow 3 to 4

Breaking3.4.2 → 4.3.0Breaking23Platform2Deprecated2New28Changed21Fixed44Other119

BreakingUpgrade verdict

23 breaking changes and 2 platform requirement changes.

  • Removed redundant lines [radarhere].
  • Removed debugging interface for Image.core.grabclipboard [radarhere].
  • Remove palettes from non-palette modes in _new [wiredfool].
  • Delete transparency info when convert'ing RGB/L to RGBA [olt].
Top 5 of 27 that need code or config changes
Breaking23
Removed redundant lines [radarhere].
Removed debugging interface for Image.core.grabclipboard [radarhere].
Remove palettes from non-palette modes in _new [wiredfool].
Delete transparency info when convert'ing RGB/L to RGBA [olt].
Remove unused im.copy2 and core.copy methods [homm].
Remove deprecated code [hugovk].
Remove unused function core image function new_array [hugovk].
Remove unnecessary calls to dict.keys [jdufresne].
Remove 'not yet implemented' methods from PIL 1.1.4 [hugovk].
Remove WITH_DEBUG compilation flag [wiredfool].
Removed winbuild checksum verification [radarhere].
Remove superfluous import of FixTk [cgohlke).
Remove unused imports [radarhere].
Removed use of spaces in TIFF kwargs names, deprecated in 2.7 [radarhere].
Removed deprecated ImageDraw setink, setfill, setfont methods [jdufresne].
Removed unused private functions in setup.py and build_dep.py [radarhere].
BUG: Empty image mode no longer causes a crash [evalapply].
Remove 'MIT-like' from license [wiredfool].
Removed PIL 1.0 era TK readme that concerns Windows 95/NT [wiredfool].
Remove executable bit and shebang from OleFileIO.py [jwilk, radarhere].
Remove vendored version of olefile Python package in favor of upstream [jdufresne].
Removed the handles_eof flag in decode.c [wiredfool].
Removed deprecated internal "stretch" method [homm].
Platform2
Removed support for Python 2.6 and Python 3.2 [jdufresne].
Fixed bug in saving to fp-objects in Python >= 3.4 [radarhere].
Deprecated2
Deprecate ImageOps undocumented functions gaussian_blur, gblur, unsharp_mask, usm and box_blur in favor of ImageFilter implementations [homm].
Use Integer division to eliminate deprecation warning. [mastermatt].

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

  • added: export version
  • removed: variable i16
  • removed: variable i32
  • removed: variable i8
  • removed: variable o16
  • removed: variable o32
  • removed: variable o8
  • removed: variable i16
  • removed: variable i32
  • removed: variable i8
  • removed: variable i32
  • removed: variable i32
  • removed: variable o32
  • removed: variable i16
  • removed: variable i32
  • removed: variable i8
  • removed: variable o8
  • removed: variable i32
  • removed: variable i16
  • removed: variable i16
  • removed: variable i8
  • removed: variable o16
  • removed: variable o8
  • removed: variable i8
  • removed: variable i16
  • removed: variable i32
  • removed: variable i8
  • changed: method Image.resize(size, resample=…) → method Image.resize(size, resample=…, box=…)
  • changed: method Image.rotate(angle, resample=…, expand=…) → method Image.rotate(angle, resample=…, expand=…, center=…, translate=…)
  • added: function linear_gradient(mode)
  • added: function radial_gradient(mode)
  • added: function register_decoder(name, decoder)
  • added: function register_encoder(name, encoder)
  • added: function register_extensions(id, extensions)
  • added: function registered_extensions()
  • added: method Image.alpha_composite(im, dest=…, source=…)
  • added: method Image.getchannel(channel)
  • added: method Image.remap_palette(dest_map, source_palette=…)
  • added: variable DECODERS
  • added: variable ENCODERS
  • added: variable HAS_PATHLIB
  • added: variable TRANSVERSE
  • removed: method ImageDraw.setfill(onoff)
  • removed: method ImageDraw.setfont(font)
  • removed: method ImageDraw.setink(ink)
  • changed: function floodfill(image, xy, value, border=…) → function floodfill(image, xy, value, border=…, thresh=…)
  • changed: method ImageDraw.multiline_text(xy, text, fill=…, font=…, anchor=…, spacing=…, align=…) → method ImageDraw.multiline_text(xy, text, fill=…, font=…, anchor=…, spacing=…, align=…, direction=…, features=…)
  • changed: method ImageDraw.multiline_textsize(text, font=…, spacing=…) → method ImageDraw.multiline_textsize(text, font=…, spacing=…, direction=…, features=…)
  • changed: method ImageDraw.textsize(text, font=…, *args, **kwargs) → method ImageDraw.textsize(text, font=…, spacing=…, direction=…, features=…)
  • added: class PyCodecState(object)
  • added: class PyDecoder(object)
  • added: constructor PyCodecState()
  • added: constructor PyDecoder(mode, *args)
  • added: method PyCodecState.extents()
  • added: method PyDecoder.cleanup()
  • added: method PyDecoder.decode(buffer)
  • added: method PyDecoder.init(args)
  • added: method PyDecoder.set_as_raw(data, rawmode=…)
  • added: method PyDecoder.setfd(fd)
  • added: method PyDecoder.setimage(im, extents=…)
  • added: property PyDecoder.pulls_fd
  • changed: class GaussianBlur(Filter) → class GaussianBlur(MultibandFilter)
  • changed: class Kernel(Filter) → class Kernel(MultibandFilter)
  • changed: class UnsharpMask(Filter) → class UnsharpMask(MultibandFilter)
  • added: class BoxBlur(MultibandFilter)
  • added: class MultibandFilter(Filter)
  • added: constructor BoxBlur(radius)
  • added: field BoxBlur.name
  • added: method BoxBlur.filter(image)
  • changed: constructor FreeTypeFont(font=…, size=…, index=…, encoding=…) → constructor FreeTypeFont(font=…, size=…, index=…, encoding=…, layout_engine=…)
  • changed: function truetype(font=…, size=…, index=…, encoding=…) → function truetype(font=…, size=…, index=…, encoding=…, layout_engine=…)
  • changed: method FreeTypeFont.font_variant(font=…, size=…, index=…, encoding=…) → method FreeTypeFont.font_variant(font=…, size=…, index=…, encoding=…, layout_engine=…)
  • changed: method FreeTypeFont.getmask(text, mode=…) → method FreeTypeFont.getmask(text, mode=…, direction=…, features=…)
  • changed: method FreeTypeFont.getmask2(text, mode=…, fill=…) → method FreeTypeFont.getmask2(text, mode=…, fill=…, direction=…, features=…, *args, **kwargs)
  • changed: method FreeTypeFont.getsize(text) → method FreeTypeFont.getsize(text, direction=…, features=…)
  • changed: method TransposedFont.getmask(text, mode=…) → method TransposedFont.getmask(text, mode=…, *args, **kwargs)
  • changed: method TransposedFont.getsize(text) → method TransposedFont.getsize(text, *args, **kwargs)
  • added: method ImageFont.getmask(text, mode=…, *args, **kwargs)
  • added: method ImageFont.getsize(text, *args, **kwargs)
  • added: variable LAYOUT_BASIC
  • added: variable LAYOUT_RAQM
  • removed: variable gblur
  • removed: variable usm
  • added: function gblur(im, radius=…)
  • added: function usm(im, radius=…, percent=…, threshold=…)
  • added: field MacViewer.options
  • added: field UnixViewer.format
  • added: field UnixViewer.options
  • added: field Viewer.options
  • removed: variable tkinter
  • added: variable ffi
  • removed: method Dib.fromstring(*args, **kw)
  • removed: method Dib.tostring(*args, **kw)
  • removed: variable i16
  • removed: variable i32
  • removed: variable i8
  • removed: variable o8
  • removed: variable i16
  • removed: variable i32
  • removed: variable i8
  • removed: variable o8
  • removed: variable i16
  • removed: variable o16
  • added: class MspDecoder(ImageFile.PyDecoder)
  • added: method MspDecoder.decode(buffer)
  • removed: class OleFileIO(object)
  • removed: class OleMetadata(object)
  • removed: constructor OleFileIO(filename=…, raise_defects=…, write_mode=…, debug=…, path_encoding=…)
  • removed: constructor OleMetadata()
  • removed: field OleMetadata.DOCSUM_ATTRIBS
  • removed: field OleMetadata.SUMMARY_ATTRIBS
  • removed: function debug_pass(msg)
  • removed: function debug_print(msg)
  • removed: function filetime2datetime(filetime)
  • removed: function i16(c, o=…)
  • removed: function i32(c, o=…)
  • removed: function i8(c)
  • removed: function isOleFile(filename)
  • removed: function set_debug_mode(debug_mode)
  • removed: method OleFileIO.close()
  • removed: method OleFileIO.dumpdirectory()
  • removed: method OleFileIO.dumpfat(fat, firstindex=…)
  • removed: method OleFileIO.dumpsect(sector, firstindex=…)
  • removed: method OleFileIO.exists(filename)
  • removed: method OleFileIO.get_metadata()
  • removed: method OleFileIO.get_rootentry_name()
  • removed: method OleFileIO.get_size(filename)
  • removed: method OleFileIO.get_type(filename)
  • removed: method OleFileIO.getctime(filename)
  • removed: method OleFileIO.getmtime(filename)
  • removed: method OleFileIO.getproperties(filename, convert_time=…, no_conversion=…)
  • removed: method OleFileIO.getsect(sect)
  • removed: method OleFileIO.listdir(streams=…, storages=…)
  • removed: method OleFileIO.loaddirectory(sect)
  • removed: method OleFileIO.loadfat(header)
  • removed: method OleFileIO.loadfat_sect(sect)
  • removed: method OleFileIO.loadminifat()
  • removed: method OleFileIO.open(filename, write_mode=…)
  • removed: method OleFileIO.openstream(filename)
  • removed: method OleFileIO.raise_defect(defect_level, message, exception_type=…)
  • removed: method OleFileIO.sect2array(sect)
  • removed: method OleFileIO.write_sect(sect, data, padding=…)
  • removed: method OleFileIO.write_stream(stream_name, data)
  • removed: method OleMetadata.dump()
  • removed: method OleMetadata.parse_properties(olefile)
  • removed: variable DEBUG_MODE
  • removed: variable DEFAULT_PATH_ENCODING
  • removed: variable DEFECT_FATAL
  • removed: variable DEFECT_INCORRECT
  • removed: variable DEFECT_POTENTIAL
  • removed: variable DEFECT_UNSURE
  • removed: variable DIFSECT
  • removed: variable ENDOFCHAIN
  • removed: variable FATSECT
  • removed: variable FREESECT
  • removed: variable KEEP_UNICODE_NAMES
  • removed: variable MAGIC
  • removed: variable MAXREGSECT
  • removed: variable MAXREGSID
  • removed: variable MINIMAL_OLEFILE_SIZE
  • removed: variable NOSTREAM
  • removed: variable STGTY_EMPTY
  • removed: variable STGTY_LOCKBYTES
  • removed: variable STGTY_PROPERTY
  • removed: variable STGTY_ROOT
  • removed: variable STGTY_STORAGE
  • removed: variable STGTY_STREAM
  • removed: variable UINT32
  • removed: variable VT
  • removed: variable VT_BLOB
  • removed: variable VT_BLOB_OBJECT
  • removed: variable VT_BOOL
  • removed: variable VT_BSTR
  • removed: variable VT_CARRAY
  • removed: variable VT_CF
  • removed: variable VT_CLSID
  • removed: variable VT_CY
  • removed: variable VT_DATE
  • removed: variable VT_DECIMAL
  • removed: variable VT_DISPATCH
  • removed: variable VT_EMPTY
  • removed: variable VT_ERROR
  • removed: variable VT_FILETIME
  • removed: variable VT_HRESULT
  • removed: variable VT_I1
  • removed: variable VT_I2
  • removed: variable VT_I4
  • removed: variable VT_I8
  • removed: variable VT_INT
  • removed: variable VT_LPSTR
  • removed: variable VT_LPWSTR
  • removed: variable VT_NULL
  • removed: variable VT_PTR
  • removed: variable VT_R4
  • removed: variable VT_R8
  • removed: variable VT_SAFEARRAY
  • removed: variable VT_STORAGE
  • removed: variable VT_STORED_OBJECT
  • removed: variable VT_STREAM
  • removed: variable VT_STREAMED_OBJECT
  • removed: variable VT_UI1
  • removed: variable VT_UI2
  • removed: variable VT_UI4
  • removed: variable VT_UI8
  • removed: variable VT_UINT
  • removed: variable VT_UNKNOWN
  • removed: variable VT_USERDEFINED
  • removed: variable VT_VARIANT
  • removed: variable VT_VECTOR
  • removed: variable VT_VOID
  • removed: variable WORD_CLSID
  • removed: variable basestring
  • removed: variable check_streams
  • removed: variable debug
  • removed: variable iterrange
  • removed: variable long
  • removed: variable o16b
  • removed: variable o8
  • removed: variable i8
  • added: method PcdImageFile.load_end()
  • removed: variable b16
  • removed: variable b32
  • removed: variable i8
  • removed: variable l16
  • removed: variable l32
  • removed: variable i16
  • removed: variable i8
  • removed: variable o16
  • removed: variable o8
  • removed: variable i16
  • removed: variable i16
  • removed: variable i32
  • removed: variable i8
  • removed: variable o16
  • removed: variable o32
  • removed: variable o8
  • removed: variable i16
  • removed: variable i32
  • removed: variable i8
  • removed: variable i16
  • removed: variable i8
  • added: class SGI16Decoder(ImageFile.PyDecoder)
  • added: method SGI16Decoder.decode(buffer)
  • added: variable MODES
  • removed: variable i32
  • removed: variable i16
  • removed: variable i8
  • removed: variable o16
  • removed: variable o32
  • removed: variable o8
  • removed: method ImageFileDirectory_v2.as_dict()
  • removed: variable i8
  • removed: variable o8
  • added: method TiffImageFile.load_end()
  • removed: variable i32
  • removed: function short(c, o=…)
  • removed: variable dword
  • removed: variable word
  • removed: variable o8
  • added: function check(feature)
  • added: function check_feature(feature)
  • added: function get_supported()
  • added: function get_supported_features()
  • added: variable features