Copy C palette when merging

This commit is contained in:
Andrew Murray 2025-08-15 15:56:56 +10:00
parent 092d4422d5
commit 0ae2611b44
2 changed files with 12 additions and 1 deletions

View File

@ -1076,6 +1076,12 @@ class TestImage:
assert im.palette is not None
assert im.palette.colors[(27, 35, 6, 214)] == 24
def test_merge_pa(self) -> None:
p = hopper("P")
a = Image.new("L", p.size)
pa = Image.merge("PA", (p, a))
assert p.getpalette() == pa.getpalette()
def test_constants(self) -> None:
for enum in (
Image.Transpose,

View File

@ -2419,7 +2419,12 @@ _merge(PyObject *self, PyObject *args) {
bands[3] = band3->image;
}
return PyImagingNew(ImagingMerge(mode, bands));
Imaging imOut = ImagingMerge(mode, bands);
if (!imOut) {
return NULL;
}
ImagingCopyPalette(imOut, bands[0]);
return PyImagingNew(imOut);
}
static PyObject *