Skip to content

Commit f9cf18b

Browse files
committed
Copy C palette when merging
1 parent 6d974b6 commit f9cf18b

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

Tests/test_image.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1076,6 +1076,12 @@ def test_apply_transparency(self) -> None:
10761076
assert im.palette is not None
10771077
assert im.palette.colors[(27, 35, 6, 214)] == 24
10781078

1079+
def test_merge_pa(self) -> None:
1080+
p = hopper("P")
1081+
a = Image.new("L", p.size)
1082+
pa = Image.merge("PA", (p, a))
1083+
assert p.getpalette() == pa.getpalette()
1084+
10791085
def test_constants(self) -> None:
10801086
for enum in (
10811087
Image.Transpose,

src/_imaging.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2419,7 +2419,12 @@ _merge(PyObject *self, PyObject *args) {
24192419
bands[3] = band3->image;
24202420
}
24212421

2422-
return PyImagingNew(ImagingMerge(mode, bands));
2422+
Imaging imOut = ImagingMerge(mode, bands);
2423+
if (!imOut) {
2424+
return NULL;
2425+
}
2426+
ImagingCopyPalette(imOut, bands[0]);
2427+
return PyImagingNew(imOut);
24232428
}
24242429

24252430
static PyObject *

0 commit comments

Comments
 (0)