棄用與移除

此頁面列出 Pillow 中已棄用或在過去主要版本中已移除的功能,並提供替代方案。

已棄用功能

以下是視為已棄用的功能。在適當的情況下,會發出 DeprecationWarning

ImageFile.raise_oserror

自 10.2.0 版本起棄用。

ImageFile.raise_oserror() 已被棄用,將在 Pillow 12.0.0 (2025-10-15) 中移除。此函式未記錄在文件中,僅用於轉換編解碼器 decode() 方法傳回的錯誤代碼,而 ImageFile 已自動執行此操作。

IptcImageFile 輔助函式

自 10.2.0 版本起棄用。

函式 IptcImageFile.dumpIptcImageFile.i,以及常數 IptcImageFile.PAD 已被棄用,將在 Pillow 12.0.0 (2025-10-15) 中移除。這些是未記錄在文件中、供內部使用的輔助函式,因此沒有替代方案。它們都可以使用 Python 中的內建函式用單行程式碼取代。

ImageCms 常數和 versions() 函式

自 10.3.0 版本起棄用。

ImageCms 中的許多常數和一個函式已被棄用。這包括一個基於 LittleCMS 版本 1 的旗標表,該表已被新的類別 ImageCms.Flags 取代,該類別基於 LittleCMS 2 旗標。

已棄用

改用

ImageCms.DESCRIPTION

沒有替代方案

ImageCms.VERSION

PIL.__version__

ImageCms.FLAGS["MATRIXINPUT"]

ImageCms.Flags.CLUT_POST_LINEARIZATION

ImageCms.FLAGS["MATRIXOUTPUT"]

ImageCms.Flags.FORCE_CLUT

ImageCms.FLAGS["MATRIXONLY"]

沒有替代方案

ImageCms.FLAGS["NOWHITEONWHITEFIXUP"]

ImageCms.Flags.NOWHITEONWHITEFIXUP

ImageCms.FLAGS["NOPRELINEARIZATION"]

ImageCms.Flags.CLUT_PRE_LINEARIZATION

ImageCms.FLAGS["GUESSDEVICECLASS"]

ImageCms.Flags.GUESSDEVICECLASS

ImageCms.FLAGS["NOTCACHE"]

ImageCms.Flags.NOCACHE

ImageCms.FLAGS["NOTPRECALC"]

ImageCms.Flags.NOOPTIMIZE

ImageCms.FLAGS["NULLTRANSFORM"]

ImageCms.Flags.NULLTRANSFORM

ImageCms.FLAGS["HIGHRESPRECALC"]

ImageCms.Flags.HIGHRESPRECALC

ImageCms.FLAGS["LOWRESPRECALC"]

ImageCms.Flags.LOWRESPRECALC

ImageCms.FLAGS["GAMUTCHECK"]

ImageCms.Flags.GAMUTCHECK

ImageCms.FLAGS["WHITEBLACKCOMPENSATION"]

ImageCms.Flags.BLACKPOINTCOMPENSATION

ImageCms.FLAGS["BLACKPOINTCOMPENSATION"]

ImageCms.Flags.BLACKPOINTCOMPENSATION

ImageCms.FLAGS["SOFTPROOFING"]

ImageCms.Flags.SOFTPROOFING

ImageCms.FLAGS["PRESERVEBLACK"]

ImageCms.Flags.NONEGATIVES

ImageCms.FLAGS["NODEFAULTRESOURCEDEF"]

ImageCms.Flags.NODEFAULTRESOURCEDEF

ImageCms.FLAGS["GRIDPOINTS"]

ImageCms.Flags.GRIDPOINTS()

ImageCms.versions()

PIL.features.version_module()feature="littlecms2"sys.versionsys.version_infoPIL.__version__

ImageMath eval()

自 10.3.0 版本起棄用。

ImageMath.eval() 已被棄用。請改用 lambda_eval()unsafe_eval()

BGR;15、BGR 16 和 BGR;24

自 10.4.0 版本起棄用。

實驗性的 BGR;15、BGR;16 和 BGR;24 模式已被棄用。

ImageCms 中的非影像模式

自 10.4.0 版本起棄用。

ImageCms 中使用非 Pillow 影像模式的輸入模式和輸出模式已被棄用。如果無法對應模式,則預設為「L」或「1」也已被棄用。

支援 4 之前的 LibTIFF

自 10.4.0 版本起棄用。

已棄用支援 4 之前的 LibTIFF 版本。請改為升級到較新版本的 LibTIFF。

ImageDraw.getdraw hints 參數

自 10.4.0 版本起棄用。

已棄用 getdraw() 中的 hints 參數。

FreeType 2.9.0

自 11.0.0 版本起棄用。

對 FreeType 2.9.0 的支援已棄用,將在 Pillow 12.0.0 (2025-10-15) 中移除,屆時 FreeType 2.9.1 將為最低支援版本。

我們建議升級到至少 FreeType 2.10.4,該版本修復了 FreeType 2.6 中引入的嚴重漏洞 (CVE 2020-15999)。

ICNS (寬度、高度、縮放) 大小

自 11.0.0 版本起棄用。

在載入前設定 ICNS 影像尺寸為 (寬度, 高度, 縮放比例) 的方式已被棄用。請改用 load(縮放比例)

Image isImageType()

自 11.0.0 版本起棄用。

Image.isImageType(im) 已被棄用。請改用 isinstance(im, Image.Image)

ImageMath.lambda_eval 和 ImageMath.unsafe_eval 選項參數

自 11.0.0 版本起棄用。

lambda_eval()unsafe_eval() 中的 options 參數已被棄用。請改用一個或多個關鍵字引數。

JpegImageFile.huffman_ac 和 JpegImageFile.huffman_dc

自 11.0.0 版本起棄用。

JPEG 影像上的 huffman_achuffman_dc 字典未使用。它們已被棄用,並將在 Pillow 12 (2025-10-15) 中移除。

特定 WebP 功能檢查

自 11.0.0 版本起棄用。

features.check("transp_webp")features.check("webp_mux")features.check("webp_anim") 現在已被棄用。如果已安裝 WebP 模組,它們將始終返回 True,直到它們在 Pillow 12.0.0 (2025-10-15) 中被移除。

取得物件的內部指標

自 11.0.0 版本起棄用。

Image.core.ImagingCore.idImage.core.ImagingCore.unsafe_ptrs 已被棄用,並將在 Pillow 12 (2025-10-15) 中移除。它們用於取得 ImagingCore 內部的原始指標。要與 C 程式碼互動,您可以使用 Image.Image.getim(),它會返回一個 Capsule 物件。

已移除的功能

已棄用的功能只會在經過適當的棄用期後的主要版本中移除。

TiffImagePlugin IFD_LEGACY_API

已在 11.0.0 版本中移除。

TiffImagePlugin.IFD_LEGACY_API 已被移除,因為它是一個未使用的設定。

PSFile

自 9.5.0 版本起已棄用。

已在 11.0.0 版本中移除。

PSFile 類別已在 Pillow 11 (2024-10-15) 中移除。此類別僅作為內部使用的輔助工具,因此沒有替代方案。但是,如果您需要此功能,它是一個非常簡短的類別,可以在您自己的程式碼中輕鬆重新建立。

PyAccess 和 Image.USE_CFFI_ACCESS

自 10.0.0 版本起已棄用。

已在 11.0.0 版本中移除。

由於 Pillow 的 C API 現在在 PyPy 上比 PyAccess 更快,因此 PyAccess 已被移除。Pillow 的 C API 現在將在 PyPy 上使用。

Image.USE_CFFI_ACCESS 用於從 C API 切換到 PyAccess 也被類似地移除。

Tk/Tcl 8.4

自 8.2.0 版本起已棄用。

已在 10.0.0 版本中移除。

Pillow 10.0.0 (2023-07-01) 中移除了對 Tk/Tcl 8.4 的支援。

類別

自 8.2.0 版本起已棄用。

已在 10.0.0 版本中移除。

im.category 已被移除,同時移除了相關的 Image.NORMALImage.SEQUENCEImage.CONTAINER 屬性。

要判斷影像是否有多個影格,可以使用 getattr(im, "is_animated", False)

JpegImagePlugin.convert_dict_qtables

自 8.3.0 版本起已棄用。

已在 10.0.0 版本中移除。

自 Pillow 8.3.0 中棄用以來,convert_dict_qtables 方法不再對給定的資料執行任何操作,並且已被移除。

ImagePalette 大小參數

自 8.4.0 版本起已棄用。

已在 10.0.0 版本中移除。

在 Pillow 8.3.0 之前,ImagePalette 預設要求調色盤資料的特定長度,並且可以使用 size 參數來覆寫該長度。Pillow 8.3.0 移除了預設的必要長度,也移除了對 size 參數的需求。

ImageShow.Viewer.show_file file 引數

自 9.1.0 版本起已棄用。

已在 10.0.0 版本中移除。

show_file() 中的 file 引數已被移除,並由 path 取代。

實際上,viewer.show_file("test.jpg") 將繼續不變地工作。

常數

自 9.1.0 版本起已棄用。

已在 10.0.0 版本中移除。

許多常數已被移除。取而代之的是,已新增 enum.IntEnum 類別。

注意

額外的 Image 常數已在 Pillow 9.1.0 中棄用,但在 Pillow 9.4.0 中已反轉,這些常數現在將繼續可用。請參閱 常數

已移除

改用

Image.LINEAR

Image.BILINEARImage.Resampling.BILINEAR

Image.CUBIC

Image.BICUBICImage.Resampling.BICUBIC

Image.ANTIALIAS

Image.LANCZOSImage.Resampling.LANCZOS

ImageCms.INTENT_PERCEPTUAL

ImageCms.Intent.PERCEPTUAL

ImageCms.INTENT_RELATIVE_COLORMETRIC

ImageCms.Intent.RELATIVE_COLORMETRIC

ImageCms.INTENT_SATURATION

ImageCms.Intent.SATURATION

ImageCms.INTENT_ABSOLUTE_COLORIMETRIC

ImageCms.Intent.ABSOLUTE_COLORIMETRIC

ImageCms.DIRECTION_INPUT

ImageCms.Direction.INPUT

ImageCms.DIRECTION_OUTPUT

ImageCms.Direction.OUTPUT

ImageCms.DIRECTION_PROOF

ImageCms.Direction.PROOF

ImageFont.LAYOUT_BASIC

ImageFont.Layout.BASIC

ImageFont.LAYOUT_RAQM

ImageFont.Layout.RAQM

BlpImagePlugin.BLP_FORMAT_JPEG

BlpImagePlugin.Format.JPEG

BlpImagePlugin.BLP_ENCODING_UNCOMPRESSED

BlpImagePlugin.Encoding.UNCOMPRESSED

BlpImagePlugin.BLP_ENCODING_DXT

BlpImagePlugin.Encoding.DXT

BlpImagePlugin.BLP_ENCODING_UNCOMPRESSED_RAW_RGBA

BlpImagePlugin.Encoding.UNCOMPRESSED_RAW_RGBA

BlpImagePlugin.BLP_ALPHA_ENCODING_DXT1

BlpImagePlugin.AlphaEncoding.DXT1

BlpImagePlugin.BLP_ALPHA_ENCODING_DXT3

BlpImagePlugin.AlphaEncoding.DXT3

BlpImagePlugin.BLP_ALPHA_ENCODING_DXT5

BlpImagePlugin.AlphaEncoding.DXT5

FtexImagePlugin.FORMAT_DXT1

FtexImagePlugin.Format.DXT1

FtexImagePlugin.FORMAT_UNCOMPRESSED

FtexImagePlugin.Format.UNCOMPRESSED

PngImagePlugin.APNG_DISPOSE_OP_NONE

PngImagePlugin.Disposal.OP_NONE

PngImagePlugin.APNG_DISPOSE_OP_BACKGROUND

PngImagePlugin.Disposal.OP_BACKGROUND

PngImagePlugin.APNG_DISPOSE_OP_PREVIOUS

PngImagePlugin.Disposal.OP_PREVIOUS

PngImagePlugin.APNG_BLEND_OP_SOURCE

PngImagePlugin.Blend.OP_SOURCE

PngImagePlugin.APNG_BLEND_OP_OVER

PngImagePlugin.Blend.OP_OVER

FitsStubImagePlugin

自 9.1.0 版本起已棄用。

已在 10.0.0 版本中移除。

存根影像外掛程式 FitsStubImagePlugin 已被移除。FITS 影像可以透過 FitsImagePlugin 直接讀取,而無需處理常式。

字體大小和偏移方法

自 9.2.0 版本起已棄用。

已在 10.0.0 版本中移除。

已移除數個用於計算呈現文字的大小和偏移量的函式

已移除

改用

FreeTypeFont.getsize()FreeTypeFont.getoffset()

FreeTypeFont.getbbox()FreeTypeFont.getlength()

FreeTypeFont.getsize_multiline()

ImageDraw.multiline_textbbox()

ImageFont.getsize()

ImageFont.getbbox()ImageFont.getlength()

TransposedFont.getsize()

TransposedFont.getbbox()TransposedFont.getlength()

ImageDraw.textsize()ImageDraw.multiline_textsize()

ImageDraw.textbbox()ImageDraw.textlength()ImageDraw.multiline_textbbox()

ImageDraw2.Draw.textsize()

ImageDraw2.Draw.textbbox()ImageDraw2.Draw.textlength()

先前的程式碼

from PIL import Image, ImageDraw, ImageFont

font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")
width, height = font.getsize("Hello world")
left, top = font.getoffset("Hello world")

im = Image.new("RGB", (100, 100))
draw = ImageDraw.Draw(im)
width, height = draw.textsize("Hello world", font)

width, height = font.getsize_multiline("Hello\nworld")
width, height = draw.multiline_textsize("Hello\nworld", font)

改用

from PIL import Image, ImageDraw, ImageFont

font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")
left, top, right, bottom = font.getbbox("Hello world")
width, height = right - left, bottom - top

im = Image.new("RGB", (100, 100))
draw = ImageDraw.Draw(im)
width = draw.textlength("Hello world", font)

left, top, right, bottom = draw.multiline_textbbox((0, 0), "Hello\nworld", font)
width, height = right - left, bottom - top

先前,size 方法傳回的 height 包含文字的垂直偏移量,而新的 bbox 方法將其區分為 top 偏移量。

In bbox methods, top measures the vertical distance above the text, while bottom measures that plus the vertical distance of the text itself. In size methods, height also measures the vertical distance above the text plus the vertical distance of the text itself.

如果您使用這些方法對齊文字,請考慮改用 文字錨點,以避免非英文文字或不尋常的字型可能發生的問題。例如,取代以下程式碼

from PIL import Image, ImageDraw, ImageFont

font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

im = Image.new("RGB", (100, 100))
draw = ImageDraw.Draw(im)
width, height = draw.textsize("Hello world", font)
x, y = (100 - width) / 2, (100 - height) / 2
draw.text((x, y), "Hello world", font=font)

改用

from PIL import Image, ImageDraw, ImageFont

font = ImageFont.truetype("Tests/fonts/FreeMono.ttf")

im = Image.new("RGB", (100, 100))
draw = ImageDraw.Draw(im)
draw.text((100 / 2, 100 / 2), "Hello world", font=font, anchor="mm")

FreeTypeFont.getmask2 fill 參數

自 9.2.0 版本起已棄用。

已在 10.0.0 版本中移除。

已移除 FreeTypeFont.getmask2() 的未記載的 fill 參數。

PhotoImage.paste 的 box 參數

自 9.2.0 版本起已棄用。

已在 10.0.0 版本中移除。

box 參數未使用,已移除。

PyQt5 和 PySide2

自 9.2.0 版本起已棄用。

已在 10.0.0 版本中移除。

Qt 5 於 2020-12-08 對開源使用者達到生命週期結束 (End-of-Life)(對於商業授權持有者,將於 2023-12-08 達到 EOL)。

已從 ImageQt 移除對 PyQt5 和 PySide2 的支援。請升級至 PyQt6PySide6 作為替代。

Image.coerce_e

自 9.2.0 版本起已棄用。

已在 10.0.0 版本中移除。

此未公開的方法已移除。

PILLOW_VERSION 常數

自 5.2.0 版本起已棄用。

已於 9.0.0 版本移除。

請改用 __version__

最初在 Pillow 7.0.0 中移除,但為了讓專案有更多時間升級,在 7.1.0 中暫時恢復。

Image.show 的 command 參數

自 7.2.0 版本起已棄用。

已於 9.0.0 版本移除。

已移除 command 參數。請改用 ImageShow.Viewer 的子類別。

Image._showxv

自 7.2.0 版本起已棄用。

已於 9.0.0 版本移除。

請改用 Image.Image.show()。如果需要自訂行為,請使用 ImageShow.register() 來新增自訂的 ImageShow.Viewer 類別。

ImageFile.raise_ioerror

自 7.2.0 版本起已棄用。

已於 9.0.0 版本移除。

IOError 在 Python 3.3 中已合併至 OSError。因此,ImageFile.raise_ioerror 已移除。請改用 ImageFile.raise_oserror

FreeType 2.7

自 8.1.0 版本起已棄用。

已於 9.0.0 版本移除。

已移除對 FreeType 2.7 的支援。

我們建議升級至至少 FreeType 2.10.4,此版本修復了 FreeType 2.6 中引入的嚴重漏洞(CVE 2020-15999)。

im.offset

自 1.1.2 版本起已棄用。

已於 8.0.0 版本移除。

已移除 im.offset(),請改為呼叫 ImageChops.offset()

在 PIL 1.1.2 中已記錄為已棄用,自 1.1.5 起引發 DeprecationWarning,自 Pillow 3.0.0 起引發 Exception,以及自 3.3.0 起引發 NotImplementedError

Image.fromstring、im.fromstring 和 im.tostring

自 2.0.0 版本起已棄用。

已於 8.0.0 版本移除。

自 2.0.0 起發出 DeprecationWarning,自 3.0.0 起發出 Exception,以及自 3.3.0 起發出 NotImplementedError

ImageCms.CmsProfile 屬性

自 3.2.0 版本起已棄用。

已於 8.0.0 版本移除。

已移除 PIL.ImageCms.core.CmsProfile 中的一些屬性。自 6.0.0 起,它們發出 DeprecationWarning

已移除

改用

color_space

已填補的 xcolor_space

pcs

已填補的 connection_space

product_copyright

Unicode copyright

product_desc

Unicode profile_description

product_description

Unicode profile_description

product_manufacturer

Unicode manufacturer

product_model

Unicode model

Python 2.7

自 6.0.0 版本起已棄用。

已於 7.0.0 版本移除。

Python 2.7 於 2020-01-01 達到生命週期結束 (End-of-Life)。Pillow 6.x 是最後一個支援 Python 2 的系列。

Image.__del__

自 6.1.0 版本起已棄用。

已於 7.0.0 版本移除。

已移除在 Image.__del__ 中隱式關閉圖片底層檔案的功能。請改用上下文管理器或呼叫 Image.close() 以確定性方式關閉檔案。

先前的方法

im = Image.open("hopper.png")
im.save("out.jpg")

改用

with Image.open("hopper.png") as im:
    im.save("out.jpg")

PIL.*ImagePlugin.__version__ 屬性

自 6.0.0 版本起已棄用。

已於 7.0.0 版本移除。

已移除個別外掛程式的版本常數。請改用 PIL.__version__

已移除

已移除

已移除

BmpImagePlugin.__version__

Jpeg2KImagePlugin.__version__

PngImagePlugin.__version__

CurImagePlugin.__version__

JpegImagePlugin.__version__

PpmImagePlugin.__version__

DcxImagePlugin.__version__

McIdasImagePlugin.__version__

PsdImagePlugin.__version__

EpsImagePlugin.__version__

MicImagePlugin.__version__

SgiImagePlugin.__version__

FliImagePlugin.__version__

MpegImagePlugin.__version__

SunImagePlugin.__version__

FpxImagePlugin.__version__

MpoImagePlugin.__version__

TgaImagePlugin.__version__

GdImageFile.__version__

MspImagePlugin.__version__

TiffImagePlugin.__version__

GifImagePlugin.__version__

PalmImagePlugin.__version__

WmfImagePlugin.__version__

IcoImagePlugin.__version__

PcdImagePlugin.__version__

XbmImagePlugin.__version__

ImImagePlugin.__version__

PcxImagePlugin.__version__

XpmImagePlugin.__version__

ImtImagePlugin.__version__

PdfImagePlugin.__version__

XVThumbImagePlugin.__version__

IptcImagePlugin.__version__

PixarImagePlugin.__version__

PyQt4 和 PySide

自 6.0.0 版本起已棄用。

已於 7.0.0 版本移除。

Qt 4 於 2015-12-19 達到生命週期結束 (End-of-Life)。其 Python 繫結也已 EOL:PyQt4 自 2018-08-31 起,以及 PySide 自 2015-10-14 起。

已從 ImageQt 移除對 PyQt4 和 PySide 的支援。請升級至 PyQt5 或 PySide2。

設定 TIFF 影像的大小

自 5.3.0 版本起已棄用。

已於 7.0.0 版本移除。

直接設定 TIFF 影像的大小(例如,im.size = (256, 256))會拋出錯誤。請改用 Image.resize

VERSION 常數

自 5.2.0 版本起已棄用。

已於 6.0.0 版本移除。

已移除 VERSION(舊的 PIL 版本,永遠是 1.1.7)。請改用 __version__

未公開的 ImageOps 函式

自 4.3.0 版本起已棄用。

已於 6.0.0 版本移除。

已移除 ImageOps 中的幾個未公開的函式。請改用 ImageFilter 中的對等函式。

已移除

改用

ImageOps.box_blur

ImageFilter.BoxBlur

ImageOps.gaussian_blur

ImageFilter.GaussianBlur

ImageOps.gblur

ImageFilter.GaussianBlur

ImageOps.usm

ImageFilter.UnsharpMask

ImageOps.unsharp_mask

ImageFilter.UnsharpMask

PIL.OleFileIO

自 4.0.0 版本起已棄用。

已於 6.0.0 版本移除。

為了採用上游的 olefile Python 套件,PIL.OleFileIO 已在 Pillow 4.0.0 (2017-01) 中作為供應商檔案移除,並在 5.0.0 (2018-01) 中以 ImportError 取代。已從 Pillow 中移除已棄用的檔案。如有需要,請從 PyPI 安裝(例如,python3 -m pip install olefile)。

import _imaging

已於 2.1.0 版本移除。

Pillow >= 2.1.0 不再支援 import _imaging。請改用 from PIL.Image import core as _imaging

Pillow 和 PIL

已於 1.0.0 版本移除。

Pillow 和 PIL 無法在同一個環境中共存。在安裝 Pillow 之前,請先解除安裝 PIL。

import Image

已於 1.0.0 版本移除。

Pillow 版本 >= 1.0 不再支援 import Image。請改用 from PIL import Image