Skip to content

Upgrading pillow 8 to 9

Breaking8.4.0 → 9.5.0Breaking5Security16Platform3Deprecated3New61Changed125Fixed140Other250

BreakingUpgrade verdict

5 breaking changes and 3 platform requirement changes and 13 security fixes.

  • New BGR image modes are available, but the BGR;32 mode is no longer supported.
  • Removes the ImagingAccessInit line() method.
  • Removes support for tkinter in PyPy before Python 3.6.
  • Removes support for tkinter before Python 1.5.2.
Top 5 of 24 that need code or config changes

Python requirement changed in 9.0.0: >=3.6 → >=3.7.

Breaking5
Supports creating BGR;15, BGR;16 and BGR;24 images, but drops support for BGR;32.
BGR;15BGR;16BGR;24BGR;32
Removes the ImagingAccessInit line() method.
ImagingAccessInit.line()
Removes support for tkinter in PyPy before Python 3.6.
tkinter
Removes support for tkinter before Python 1.5.2.
tkinter
Removes deprecated PILLOW_VERSION, the Image.show command parameter, Image._showxv and ImageFile.raise_ioerror.
PILLOW_VERSIONImage.showImage._showxvImageFile.raise_ioerror
Security13
Patches CVE-2007-4559 when building on Windows.
Pillow before 9.3.0 allows denial of service via SAMPLESPERPIXEL.
SAMPLESPERPIXEL
Pillow before 9.2.0 performs Improper Handling of Highly Compressed GIF Data (Data Amplification).
Fixes CVE-2022-30595, a heap buffer overflow when reading TGA files with RLE packets that cross scan lines.
Critical · CVSS 9.8
Fixes a decompression bomb check bypass for images with zero or negative height, now raising SyntaxError and PIL.UnidentifiedImageError.
SyntaxErrorPIL.UnidentifiedImageError
Uses os.remove to delete temporary images in show_file, fixing CVE-2022-24303.
show_fileos.remove
Restricts builtins within lambdas for ImageMath.eval, fixing CVE-2022-22817.
ImageMath.eval
PIL.ImageMath.eval in Pillow before 9.0.0 allows evaluation of arbitrary expressions, such as ones that use the Python exec method.
ImageMath.eval()
Excludes carriage return in the PDF regex to help prevent ReDoS.
Blocks tile TIFF tags when saving.
TIFF
path_getbbox in path.c in Pillow before 9.0.0 has a buffer over-read during initialization of ImagePath.Path.
Infinite loop in Pillow
Low
path_getbbox in path.c in Pillow before 9.0.0 improperly initializes ImagePath.Path.
Platform3
NumPy now supports Python 3.11.
NumPy
Supports Python distributions where _tkinter is compiled in.
_tkinter
Drops support for Python 3.6, which is nearing end of life.
Deprecated3
Refactors EpsImagePlugin and deprecates PSFile.
EpsImagePluginPSFile
Adds handling for deprecations that will be removed in Pillow 11.
Deprecates ImageFont.getsize and related functions.
ImageFont.getsize

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

  • removed: variable PILLOW_VERSION
  • removed: variable BLP_ALPHA_ENCODING_DXT1
  • removed: variable BLP_ALPHA_ENCODING_DXT3
  • removed: variable BLP_ALPHA_ENCODING_DXT5
  • removed: variable BLP_ENCODING_DXT
  • removed: variable BLP_ENCODING_UNCOMPRESSED
  • removed: variable BLP_ENCODING_UNCOMPRESSED_RAW_BGRA
  • removed: variable BLP_FORMAT_JPEG
  • added: class AlphaEncoding(IntEnum)
  • added: class BLPEncoder(ImageFile.PyEncoder)
  • added: class Encoding(IntEnum)
  • added: class Format(IntEnum)
  • added: field AlphaEncoding.DXT1
  • added: field AlphaEncoding.DXT3
  • added: field AlphaEncoding.DXT5
  • added: field Encoding.DXT
  • added: field Encoding.UNCOMPRESSED
  • added: field Encoding.UNCOMPRESSED_RAW_BGRA
  • added: field Format.JPEG
  • added: method BLPEncoder.encode(bufsize)
  • added: class BmpRleDecoder(ImageFile.PyDecoder)
  • added: method BmpRleDecoder.decode(buffer)
  • added: variable DXGI_FORMAT_BC6H_SF16
  • added: variable DXGI_FORMAT_BC6H_UF16
  • added: class Base(IntEnum)
  • added: class GPS(IntEnum)
  • added: class IFD(IntEnum)
  • added: class Interop(IntEnum)
  • added: class LightSource(IntEnum)
  • added: field Base.Acceleration
  • added: field Base.ActiveArea
  • added: field Base.AmbientTemperature
  • added: field Base.AnalogBalance
  • added: field Base.AntiAliasStrength
  • added: field Base.ApertureValue
  • added: field Base.Artist
  • added: field Base.AsShotICCProfile
  • added: field Base.AsShotNeutral
  • added: field Base.AsShotPreProfileMatrix
  • added: field Base.AsShotProfileName
  • added: field Base.AsShotWhiteXY
  • added: field Base.BaselineExposure
  • added: field Base.BaselineNoise
  • added: field Base.BaselineSharpness
  • added: field Base.BatteryLevel
  • added: field Base.BayerGreenSplit
  • added: field Base.BestQualityScale
  • added: field Base.BitsPerSample
  • added: field Base.BlackLevel
  • added: field Base.BlackLevelDeltaH
  • added: field Base.BlackLevelDeltaV
  • added: field Base.BlackLevelRepeatDim
  • added: field Base.BodySerialNumber
  • added: field Base.BrightnessValue
  • added: field Base.CFALayout
  • added: field Base.CFAPattern
  • added: field Base.CFAPlaneColor
  • added: field Base.CFARepeatPatternDim
  • added: field Base.CalibrationIlluminant1
  • added: field Base.CalibrationIlluminant2
  • added: field Base.CameraCalibration1
  • added: field Base.CameraCalibration2
  • added: field Base.CameraCalibrationSignature
  • added: field Base.CameraElevationAngle
  • added: field Base.CameraOwnerName
  • added: field Base.CameraSerialNumber
  • added: field Base.CellLength
  • added: field Base.CellWidth
  • added: field Base.ChromaBlurRadius
  • added: field Base.ClipPath
  • added: field Base.ColorMap
  • added: field Base.ColorMatrix1
  • added: field Base.ColorMatrix2
  • added: field Base.ColorSpace
  • added: field Base.ColorimetricReference
  • added: field Base.ComponentsConfiguration
  • added: field Base.CompositeImage
  • added: field Base.CompositeImageCount
  • added: field Base.CompositeImageExposureTimes
  • added: field Base.CompressedBitsPerPixel
  • added: field Base.Compression
  • added: field Base.Contrast
  • added: field Base.Copyright
  • added: field Base.CurrentICCProfile
  • added: field Base.CurrentPreProfileMatrix
  • added: field Base.CustomRendered
  • added: field Base.DNGBackwardVersion
  • added: field Base.DNGPrivateData
  • added: field Base.DNGVersion
  • added: field Base.DateTime
  • added: field Base.DateTimeDigitized
  • added: field Base.DateTimeOriginal
  • added: field Base.DefaultCropOrigin
  • added: field Base.DefaultCropSize
  • added: field Base.DefaultScale
  • added: field Base.DeviceSettingDescription
  • added: field Base.DigitalZoomRatio
  • added: field Base.DocumentName
  • added: field Base.DotRange
  • added: field Base.ExifImageHeight
  • added: field Base.ExifImageWidth
  • added: field Base.ExifInteroperabilityOffset
  • added: field Base.ExifOffset
  • added: field Base.ExifVersion
  • added: field Base.ExposureBiasValue
  • added: field Base.ExposureIndex
  • added: field Base.ExposureMode
  • added: field Base.ExposureProgram
  • added: field Base.ExposureTime
  • added: field Base.ExtraSamples
  • added: field Base.FNumber
  • added: field Base.FileSource
  • added: field Base.FillOrder
  • added: field Base.Flash
  • added: field Base.FlashEnergy
  • added: field Base.FlashPixVersion
  • added: field Base.FocalLength
  • added: field Base.FocalLengthIn35mmFilm
  • added: field Base.FocalPlaneResolutionUnit
  • added: field Base.FocalPlaneXResolution
  • added: field Base.FocalPlaneYResolution
  • added: field Base.ForwardMatrix1
  • added: field Base.ForwardMatrix2
  • added: field Base.FreeByteCounts
  • added: field Base.FreeOffsets
  • added: field Base.GPSInfo
  • added: field Base.GainControl
  • added: field Base.Gamma
  • added: field Base.GrayResponseCurve
  • added: field Base.GrayResponseUnit
  • added: field Base.HalftoneHints
  • added: field Base.HostComputer
  • added: field Base.Humidity
  • added: field Base.IPTCNAA
  • added: field Base.ISOSpeed
  • added: field Base.ISOSpeedLatitudeyyy
  • added: field Base.ISOSpeedLatitudezzz
  • added: field Base.ISOSpeedRatings
  • added: field Base.ImageDescription
  • added: field Base.ImageHistory
  • added: field Base.ImageID
  • added: field Base.ImageLength
  • added: field Base.ImageNumber
  • added: field Base.ImageResources
  • added: field Base.ImageUniqueID
  • added: field Base.ImageWidth
  • added: field Base.Indexed
  • added: field Base.InkNames
  • added: field Base.InkSet
  • added: field Base.InterColorProfile
  • added: field Base.Interlace
  • added: field Base.InteropIndex
  • added: field Base.JPEGProc
  • added: field Base.JPEGTables
  • added: field Base.JpegACTables
  • added: field Base.JpegDCTables
  • added: field Base.JpegIFByteCount
  • added: field Base.JpegIFOffset
  • added: field Base.JpegLosslessPredictors
  • added: field Base.JpegPointTransforms
  • added: field Base.JpegQTables
  • added: field Base.JpegRestartInterval
  • added: field Base.LensInfo
  • added: field Base.LensMake
  • added: field Base.LensModel
  • added: field Base.LensSerialNumber
  • added: field Base.LensSpecification
  • added: field Base.LightSource
  • added: field Base.LinearResponseLimit
  • added: field Base.LinearizationTable
  • added: field Base.LocalizedCameraModel
  • added: field Base.Make
  • added: field Base.MakerNote
  • added: field Base.MakerNoteSafety
  • added: field Base.MaskedAreas
  • added: field Base.MaxApertureValue
  • added: field Base.MaxSampleValue
  • added: field Base.MeteringMode
  • added: field Base.MinSampleValue
  • added: field Base.Model
  • added: field Base.NewSubfileType
  • added: field Base.Noise
  • added: field Base.NoiseProfile
  • added: field Base.NoiseReductionApplied
  • added: field Base.NumberOfInks
  • added: field Base.OECF
  • added: field Base.OPIProxy
  • added: field Base.OffsetTime
  • added: field Base.OffsetTimeDigitized
  • added: field Base.OffsetTimeOriginal
  • added: field Base.OpcodeList1
  • added: field Base.OpcodeList2
  • added: field Base.OpcodeList3
  • added: field Base.Orientation
  • added: field Base.OriginalRawFileData
  • added: field Base.OriginalRawFileDigest
  • added: field Base.OriginalRawFileName
  • added: field Base.PageName
  • added: field Base.PageNumber
  • added: field Base.PhotometricInterpretation
  • added: field Base.PlanarConfiguration
  • added: field Base.Predictor
  • added: field Base.Pressure
  • added: field Base.PreviewApplicationName
  • added: field Base.PreviewApplicationVersion
  • added: field Base.PreviewColorSpace
  • added: field Base.PreviewDateTime
  • added: field Base.PreviewSettingsDigest
  • added: field Base.PreviewSettingsName
  • added: field Base.PrimaryChromaticities
  • added: field Base.PrintImageMatching
  • added: field Base.ProcessingSoftware
  • added: field Base.ProfileCalibrationSignature
  • added: field Base.ProfileCopyright
  • added: field Base.ProfileEmbedPolicy
  • added: field Base.ProfileHueSatMapData1
  • added: field Base.ProfileHueSatMapData2
  • added: field Base.ProfileHueSatMapDims
  • added: field Base.ProfileLookTableData
  • added: field Base.ProfileLookTableDims
  • added: field Base.ProfileName
  • added: field Base.ProfileToneCurve
  • added: field Base.Rating
  • added: field Base.RatingPercent
  • added: field Base.RawDataUniqueID
  • added: field Base.RawImageDigest
  • added: field Base.RecommendedExposureIndex
  • added: field Base.ReductionMatrix1
  • added: field Base.ReductionMatrix2
  • added: field Base.ReferenceBlackWhite
  • added: field Base.RelatedImageFileFormat
  • added: field Base.RelatedImageLength
  • added: field Base.RelatedImageWidth
  • added: field Base.RelatedSoundFile
  • added: field Base.ResolutionUnit
  • added: field Base.RowInterleaveFactor
  • added: field Base.RowsPerStrip
  • added: field Base.SMaxSampleValue
  • added: field Base.SMinSampleValue
  • added: field Base.SampleFormat
  • added: field Base.SamplesPerPixel
  • added: field Base.Saturation
  • added: field Base.SceneCaptureType
  • added: field Base.SceneType
  • added: field Base.SecurityClassification
  • added: field Base.SelfTimerMode
  • added: field Base.SensingMethod
  • added: field Base.SensitivityType
  • added: field Base.ShadowScale
  • added: field Base.Sharpness
  • added: field Base.ShutterSpeedValue
  • added: field Base.Software
  • added: field Base.SpatialFrequencyResponse
  • added: field Base.SpectralSensitivity
  • added: field Base.StandardOutputSensitivity
  • added: field Base.StripByteCounts
  • added: field Base.StripOffsets
  • added: field Base.SubIFDs
  • added: field Base.SubTileBlockSize
  • added: field Base.SubfileType
  • added: field Base.SubjectDistance
  • added: field Base.SubjectDistanceRange
  • added: field Base.SubjectLocation
  • added: field Base.SubsecTime
  • added: field Base.SubsecTimeDigitized
  • added: field Base.SubsecTimeOriginal
  • added: field Base.T4Options
  • added: field Base.T6Options
  • added: field Base.TIFFEPStandardID
  • added: field Base.TargetPrinter
  • added: field Base.Thresholding
  • added: field Base.TileByteCounts
  • added: field Base.TileLength
  • added: field Base.TileOffsets
  • added: field Base.TileWidth
  • added: field Base.TimeZoneOffset
  • added: field Base.TransferFunction
  • added: field Base.TransferRange
  • added: field Base.UniqueCameraModel
  • added: field Base.UserComment
  • added: field Base.WaterDepth
  • added: field Base.WhiteBalance
  • added: field Base.WhiteLevel
  • added: field Base.WhitePoint
  • added: field Base.XClipPathUnits
  • added: field Base.XMLPacket
  • added: field Base.XPAuthor
  • added: field Base.XPComment
  • added: field Base.XPKeywords
  • added: field Base.XPSubject
  • added: field Base.XPTitle
  • added: field Base.XResolution
  • added: field Base.YCbCrCoefficients
  • added: field Base.YCbCrPositioning
  • added: field Base.YCbCrSubSampling
  • added: field Base.YClipPathUnits
  • added: field Base.YResolution
  • added: field GPS.GPSAltitude
  • added: field GPS.GPSAltitudeRef
  • added: field GPS.GPSAreaInformation
  • added: field GPS.GPSDOP
  • added: field GPS.GPSDateStamp
  • added: field GPS.GPSDestBearing
  • added: field GPS.GPSDestBearingRef
  • added: field GPS.GPSDestDistance
  • added: field GPS.GPSDestDistanceRef
  • added: field GPS.GPSDestLatitude
  • added: field GPS.GPSDestLatitudeRef
  • added: field GPS.GPSDestLongitude
  • added: field GPS.GPSDestLongitudeRef
  • added: field GPS.GPSDifferential
  • added: field GPS.GPSHPositioningError
  • added: field GPS.GPSImgDirection
  • added: field GPS.GPSImgDirectionRef
  • added: field GPS.GPSLatitude
  • added: field GPS.GPSLatitudeRef
  • added: field GPS.GPSLongitude
  • added: field GPS.GPSLongitudeRef
  • added: field GPS.GPSMapDatum
  • added: field GPS.GPSMeasureMode
  • added: field GPS.GPSProcessingMethod
  • added: field GPS.GPSSatellites
  • added: field GPS.GPSSpeed
  • added: field GPS.GPSSpeedRef
  • added: field GPS.GPSStatus
  • added: field GPS.GPSTimeStamp
  • added: field GPS.GPSTrack
  • added: field GPS.GPSTrackRef
  • added: field GPS.GPSVersionID
  • added: field IFD.Exif
  • added: field IFD.GPSInfo
  • added: field IFD.IFD1
  • added: field IFD.Interop
  • added: field IFD.Makernote
  • added: field Interop.InteropIndex
  • added: field Interop.InteropVersion
  • added: field Interop.RelatedImageFileFormat
  • added: field Interop.RelatedImageWidth
  • added: field Interop.RleatedImageHeight
  • added: field LightSource.Cloudy
  • added: field LightSource.CoolWhiteFluorescent
  • added: field LightSource.D50
  • added: field LightSource.D55
  • added: field LightSource.D65
  • added: field LightSource.D75
  • added: field LightSource.DayWhiteFluorescent
  • added: field LightSource.Daylight
  • added: field LightSource.DaylightFluorescent
  • added: field LightSource.Fine
  • added: field LightSource.Flash
  • added: field LightSource.Fluorescent
  • added: field LightSource.ISO
  • added: field LightSource.Other
  • added: field LightSource.Shade
  • added: field LightSource.StandardLightA
  • added: field LightSource.StandardLightB
  • added: field LightSource.StandardLightC
  • added: field LightSource.Tungsten
  • added: field LightSource.Unknown
  • added: field LightSource.WhiteFluorescent
  • added: class FitsImageFile(ImageFile.ImageFile)
  • added: field FitsImageFile.format
  • added: field FitsImageFile.format_description
  • added: method FpxImageFile.close()
  • removed: variable FORMAT_DXT1
  • removed: variable FORMAT_UNCOMPRESSED
  • added: class Format(IntEnum)
  • added: field Format.DXT1
  • added: field Format.UNCOMPRESSED
  • added: class LoadingStrategy(IntEnum)
  • added: field LoadingStrategy.RGB_AFTER_DIFFERENT_PALETTE_ONLY
  • added: field LoadingStrategy.RGB_AFTER_FIRST
  • added: field LoadingStrategy.RGB_ALWAYS
  • added: method GifImageFile.load_end()
  • added: variable LOADING_STRATEGY
  • removed: variable ADAPTIVE
  • removed: variable AFFINE
  • removed: variable ANTIALIAS
  • removed: variable BICUBIC
  • removed: variable BILINEAR
  • removed: variable BOX
  • removed: variable CONTAINER
  • removed: variable CUBIC
  • removed: variable EXTENT
  • removed: variable FASTOCTREE
  • removed: variable FLIP_LEFT_RIGHT
  • removed: variable FLIP_TOP_BOTTOM
  • removed: variable FLOYDSTEINBERG
  • removed: variable HAMMING
  • removed: variable LANCZOS
  • removed: variable LIBIMAGEQUANT
  • removed: variable LINEAR
  • removed: variable MAXCOVERAGE
  • removed: variable MEDIANCUT
  • removed: variable MESH
  • removed: variable NEAREST
  • removed: variable NONE
  • removed: variable NORMAL
  • removed: variable ORDERED
  • removed: variable PERSPECTIVE
  • removed: variable QUAD
  • removed: variable RASTERIZE
  • removed: variable ROTATE_180
  • removed: variable ROTATE_270
  • removed: variable ROTATE_90
  • removed: variable SEQUENCE
  • removed: variable TRANSPOSE
  • removed: variable TRANSVERSE
  • removed: variable WEB
  • changed: method Image.getpalette() → method Image.getpalette(rawmode=…)
  • changed: method Image.show(title=…, command=…) → method Image.show(title=…)
  • added: class Dither(IntEnum)
  • added: class Palette(IntEnum)
  • added: class Quantize(IntEnum)
  • added: class Resampling(IntEnum)
  • added: class Transform(IntEnum)
  • added: class Transpose(IntEnum)
  • added: field Dither.FLOYDSTEINBERG
  • added: field Dither.NONE
  • added: field Dither.ORDERED
  • added: field Dither.RASTERIZE
  • added: field Exif.bigtiff
  • added: field Palette.ADAPTIVE
  • added: field Palette.WEB
  • added: field Quantize.FASTOCTREE
  • added: field Quantize.LIBIMAGEQUANT
  • added: field Quantize.MAXCOVERAGE
  • added: field Quantize.MEDIANCUT
  • added: field Resampling.BICUBIC
  • added: field Resampling.BILINEAR
  • added: field Resampling.BOX
  • added: field Resampling.HAMMING
  • added: field Resampling.LANCZOS
  • added: field Resampling.NEAREST
  • added: field Transform.AFFINE
  • added: field Transform.EXTENT
  • added: field Transform.MESH
  • added: field Transform.PERSPECTIVE
  • added: field Transform.QUAD
  • added: field Transpose.FLIP_LEFT_RIGHT
  • added: field Transpose.FLIP_TOP_BOTTOM
  • added: field Transpose.ROTATE_180
  • added: field Transpose.ROTATE_270
  • added: field Transpose.ROTATE_90
  • added: field Transpose.TRANSPOSE
  • added: field Transpose.TRANSVERSE
  • added: method Exif.hide_offsets()
  • added: method Image.apply_transparency()
  • added: method Image.get_child_images()
  • added: variable module
  • added: variable msg
  • removed: variable DIRECTION_INPUT
  • removed: variable DIRECTION_OUTPUT
  • removed: variable DIRECTION_PROOF
  • removed: variable INTENT_ABSOLUTE_COLORIMETRIC
  • removed: variable INTENT_PERCEPTUAL
  • removed: variable INTENT_RELATIVE_COLORIMETRIC
  • removed: variable INTENT_SATURATION
  • added: class Direction(IntEnum)
  • added: class Intent(IntEnum)
  • added: field Direction.INPUT
  • added: field Direction.OUTPUT
  • added: field Direction.PROOF
  • added: field Intent.ABSOLUTE_COLORIMETRIC
  • added: field Intent.PERCEPTUAL
  • added: field Intent.RELATIVE_COLORIMETRIC
  • added: field Intent.SATURATION
  • changed: method ImageDraw.polygon(xy, fill=…, outline=…) → method ImageDraw.polygon(xy, fill=…, outline=…, width=…)
  • changed: method ImageDraw.rounded_rectangle(xy, radius=…, fill=…, outline=…, width=…) → method ImageDraw.rounded_rectangle(xy, radius=…, fill=…, outline=…, width=…, *, corners=…)
  • added: field ImageDraw.font
  • added: method Draw.textbbox(xy, text, font)
  • added: method Draw.textlength(text, font)
  • removed: constructor PyDecoder(mode, *args)
  • removed: function raise_ioerror(error)
  • removed: method PyDecoder.cleanup()
  • removed: method PyDecoder.init(args)
  • removed: method PyDecoder.setfd(fd)
  • removed: method PyDecoder.setimage(im, extents=…)
  • changed: class PyDecoder → class PyDecoder(PyCodec)
  • added: class PyCodec
  • added: class PyEncoder(PyCodec)
  • added: constructor PyCodec(mode, *args)
  • added: method PyCodec.cleanup()
  • added: method PyCodec.init(args)
  • added: method PyCodec.setfd(fd)
  • added: method PyCodec.setimage(im, extents=…)
  • added: method PyEncoder.encode(bufsize)
  • added: method PyEncoder.encode_to_file(fh, bufsize)
  • added: method PyEncoder.encode_to_pyfd()
  • added: property PyEncoder.pushes_fd
  • removed: variable LAYOUT_BASIC
  • removed: variable LAYOUT_RAQM
  • changed: method FreeTypeFont.getmask(text, mode=…, direction=…, features=…, language=…, stroke_width=…, anchor=…, ink=…) → method FreeTypeFont.getmask(text, mode=…, direction=…, features=…, language=…, stroke_width=…, anchor=…, ink=…, start=…)
  • changed: method FreeTypeFont.getmask2(text, mode=…, fill=…, direction=…, features=…, language=…, stroke_width=…, anchor=…, ink=…, *args, **kwargs) → method FreeTypeFont.getmask2(text, mode=…, fill=…, direction=…, features=…, language=…, stroke_width=…, anchor=…, ink=…, start=…, *args, **kwargs)
  • added: class Layout(IntEnum)
  • added: field Layout.BASIC
  • added: field Layout.RAQM
  • added: method ImageFont.getbbox(text, *args, **kwargs)
  • added: method ImageFont.getlength(text, *args, **kwargs)
  • added: method TransposedFont.getbbox(text, *args, **kwargs)
  • added: method TransposedFont.getlength(text, *args, **kwargs)
  • removed: variable VERBOSE
  • changed: constructor ModeDescriptor(mode, bands, basemode, basetype) → constructor ModeDescriptor(mode, bands, basemode, basetype, typestr)
  • added: property ImagePalette.colors
  • removed: method UnixViewer.show_file(file, **options)
  • changed: method DisplayViewer.get_command_ex(file, **options) → method DisplayViewer.get_command_ex(file, title=…, **options)
  • changed: method MacViewer.show_file(file, **options) → method MacViewer.show_file(path=…, **options)
  • changed: method Viewer.show_file(file, **options) → method Viewer.show_file(path=…, **options)
  • added: class XDGViewer(UnixViewer)
  • added: method DisplayViewer.show_file(path=…, **options)
  • added: method EogViewer.show_file(path=…, **options)
  • added: method GmDisplayViewer.show_file(path=…, **options)
  • added: method XDGViewer.get_command_ex(file, **options)
  • added: method XDGViewer.show_file(path=…, **options)
  • added: method XVViewer.show_file(path=…, **options)
  • added: method MicImageFile.close()
  • removed: variable APNG_BLEND_OP_OVER
  • removed: variable APNG_BLEND_OP_SOURCE
  • removed: variable APNG_DISPOSE_OP_BACKGROUND
  • removed: variable APNG_DISPOSE_OP_NONE
  • removed: variable APNG_DISPOSE_OP_PREVIOUS
  • added: class Blend(IntEnum)
  • added: class Disposal(IntEnum)
  • added: field Blend.OP_OVER
  • added: field Blend.OP_SOURCE
  • added: field Disposal.OP_BACKGROUND
  • added: field Disposal.OP_NONE
  • added: field Disposal.OP_PREVIOUS
  • added: class PpmDecoder(ImageFile.PyDecoder)
  • added: class PpmPlainDecoder(ImageFile.PyDecoder)
  • added: method PpmDecoder.decode(buffer)
  • added: method PpmPlainDecoder.decode(buffer)
  • removed: method PsdImageFile.load_prepare()
  • added: class QoiDecoder(ImageFile.PyDecoder)
  • added: class QoiImageFile(ImageFile.ImageFile)
  • added: field QoiImageFile.format
  • added: field QoiImageFile.format_description
  • added: method QoiDecoder.decode(buffer)
  • added: method TgaImageFile.load_end()
  • added: method TiffImageFile.get_photoshop_blocks()
  • added: variable MAX_SAMPLESPERPIXEL
  • added: variable TILEBYTECOUNTS
  • added: variable TILELENGTH
  • added: variable TILEWIDTH
  • added: variable LONG8
  • added: method WebPImageFile.getxmp()