Skip to content

Commit 374be0c

Browse files
committed
deprecate old rawmodes for 16-bit RGB data
1 parent d2fc1bd commit 374be0c

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

docs/deprecations.rst

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,23 @@ BGR;15, BGR 16 and BGR;24
107107

108108
The experimental BGR;15, BGR;16 and BGR;24 modes have been deprecated.
109109

110+
16-Bit RGB/BGR Rawmodes
111+
^^^^^^^^^^^^^^^^^^^^^^^
112+
113+
.. deprecated:: 10.4.0
114+
115+
The following rawmodes have been deprecated and replaced with better-named rawmodes.
116+
117+
RGB;15 → XBGR;1555
118+
RGB;16 → BGR;565
119+
BGR;5 → XRGB;1555
120+
BGR;15 → XRGB;1555
121+
BGR;16 → RGB;565
122+
RGB;4B → XBGR;4
123+
RGBA;4B → ABGR;4
124+
RGBA;15 → ARGB;1555
125+
BGRA;15 → ABGR;1555
126+
110127
Support for LibTIFF earlier than 4
111128
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
112129

docs/releasenotes/10.4.0.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,21 @@ BGR;15, BGR 16 and BGR;24
2828

2929
The experimental BGR;15, BGR;16 and BGR;24 modes have been deprecated.
3030

31+
16-Bit RGB/BGR Rawmodes
32+
^^^^^^^^^^^^^^^^^^^^^^^
33+
34+
The following rawmodes have been deprecated and replaced with better-named rawmodes.
35+
36+
RGB;15 → XBGR;1555
37+
RGB;16 → BGR;565
38+
BGR;5 → XRGB;1555
39+
BGR;15 → XRGB;1555
40+
BGR;16 → RGB;565
41+
RGB;4B → XBGR;4
42+
RGBA;4B → ABGR;4
43+
RGBA;15 → ARGB;1555
44+
BGRA;15 → ABGR;1555
45+
3146
Support for LibTIFF earlier than 4
3247
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3348

src/PIL/Image.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,19 @@ def _conv_type_shape(im):
276276
# may have to modify the stride calculation in map.c too!
277277
_MAPMODES = ("L", "P", "RGBX", "RGBA", "CMYK", "I;16", "I;16L", "I;16B")
278278

279+
# map of old deprecated rawmode to new replacement rawmode
280+
_DEPRECATED_RAWMODES = {
281+
"RGB;15": "XBGR;1555",
282+
"RGB;16": "BGR;565",
283+
"BGR;5": "XRGB;1555",
284+
"BGR;15": "XRGB;1555",
285+
"BGR;16": "RGB;565",
286+
"RGB;4B": "XBGR;4",
287+
"RGBA;4B": "ABGR;4",
288+
"RGBA;15": "ARGB;1555",
289+
"BGRA;15": "ABGR;1555",
290+
}
291+
279292

280293
def getmodebase(mode: str) -> str:
281294
"""
@@ -417,6 +430,13 @@ def _getdecoder(mode, decoder_name, args, extra=()):
417430
elif not isinstance(args, tuple):
418431
args = (args,)
419432

433+
if decoder_name == "raw" and args[0] in _DEPRECATED_RAWMODES:
434+
deprecate(
435+
f"rawmode {args[0]}",
436+
12,
437+
replacement=f"rawmode {_DEPRECATED_RAWMODES[args[0]]}",
438+
)
439+
420440
try:
421441
decoder = DECODERS[decoder_name]
422442
except KeyError:
@@ -1587,6 +1607,12 @@ def getpalette(self, rawmode: str | None = "RGB") -> list[int] | None:
15871607
mode = self.im.getpalettemode()
15881608
except ValueError:
15891609
return None # no palette
1610+
if rawmode in _DEPRECATED_RAWMODES:
1611+
deprecate(
1612+
f"rawmode {rawmode}",
1613+
12,
1614+
replacement=f"rawmode {_DEPRECATED_RAWMODES[rawmode]}",
1615+
)
15901616
if rawmode is None:
15911617
rawmode = mode
15921618
return list(self.im.getpalette(mode, rawmode))

0 commit comments

Comments
 (0)