Skip to content

Commit 00310ad

Browse files
committed
deprecate old rawmodes for 16-bit RGB data
1 parent f66edda commit 00310ad

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
@@ -285,6 +285,19 @@ def _conv_type_shape(im):
285285
# may have to modify the stride calculation in map.c too!
286286
_MAPMODES = ("L", "P", "RGBX", "RGBA", "CMYK", "I;16", "I;16L", "I;16B")
287287

288+
# map of old deprecated rawmode to new replacement rawmode
289+
_DEPRECATED_RAWMODES = {
290+
"RGB;15": "XBGR;1555",
291+
"RGB;16": "BGR;565",
292+
"BGR;5": "XRGB;1555",
293+
"BGR;15": "XRGB;1555",
294+
"BGR;16": "RGB;565",
295+
"RGB;4B": "XBGR;4",
296+
"RGBA;4B": "ABGR;4",
297+
"RGBA;15": "ARGB;1555",
298+
"BGRA;15": "ABGR;1555",
299+
}
300+
288301

289302
def getmodebase(mode: str) -> str:
290303
"""
@@ -428,6 +441,13 @@ def _getdecoder(
428441
elif not isinstance(args, tuple):
429442
args = (args,)
430443

444+
if decoder_name == "raw" and args[0] in _DEPRECATED_RAWMODES:
445+
deprecate(
446+
f"rawmode {args[0]}",
447+
12,
448+
replacement=f"rawmode {_DEPRECATED_RAWMODES[args[0]]}",
449+
)
450+
431451
try:
432452
decoder = DECODERS[decoder_name]
433453
except KeyError:
@@ -1627,6 +1647,12 @@ def getpalette(self, rawmode: str | None = "RGB") -> list[int] | None:
16271647
mode = self.im.getpalettemode()
16281648
except ValueError:
16291649
return None # no palette
1650+
if rawmode in _DEPRECATED_RAWMODES:
1651+
deprecate(
1652+
f"rawmode {rawmode}",
1653+
12,
1654+
replacement=f"rawmode {_DEPRECATED_RAWMODES[rawmode]}",
1655+
)
16301656
if rawmode is None:
16311657
rawmode = mode
16321658
return list(self.im.getpalette(mode, rawmode))

0 commit comments

Comments
 (0)