When the C code checks the given input and output modes it checks against this list: RGB, RGBA, RGBX, RGBA;16B, CMYK, L, L;16, L;16B, YCCA, YCC, and LAB.
|
static cmsUInt32Number |
|
findLCMStype(char *PILmode) { |
|
if (strcmp(PILmode, "RGB") == 0) { |
|
return TYPE_RGBA_8; |
|
} else if (strcmp(PILmode, "RGBA") == 0) { |
|
return TYPE_RGBA_8; |
|
} else if (strcmp(PILmode, "RGBX") == 0) { |
|
return TYPE_RGBA_8; |
|
} else if (strcmp(PILmode, "RGBA;16B") == 0) { |
|
return TYPE_RGBA_16; |
|
} else if (strcmp(PILmode, "CMYK") == 0) { |
|
return TYPE_CMYK_8; |
|
} else if (strcmp(PILmode, "L") == 0) { |
|
return TYPE_GRAY_8; |
|
} else if (strcmp(PILmode, "L;16") == 0) { |
|
return TYPE_GRAY_16; |
|
} else if (strcmp(PILmode, "L;16B") == 0) { |
|
return TYPE_GRAY_16_SE; |
|
} else if (strcmp(PILmode, "YCCA") == 0) { |
|
return TYPE_YCbCr_8; |
|
} else if (strcmp(PILmode, "YCC") == 0) { |
|
return TYPE_YCbCr_8; |
|
} else if (strcmp(PILmode, "LAB") == 0) { |
|
// LabX equivalent like ALab, but not reversed -- no #define in lcms2 |
|
return (COLORSPACE_SH(PT_LabV2) | CHANNELS_SH(3) | BYTES_SH(1) | EXTRA_SH(1)); |
|
} |
|
else { |
|
/* take a wild guess... */ |
|
return TYPE_GRAY_8; |
|
} |
|
} |
However, only RGB, RGBA, RGBX, CMYK, L, and LAB are actual imaging modes. RGBA;16B, L;16, and L;16B are rawmodes, YCCA partially exists as a rawmode named YCCA;P, and YCC is a mode but is named YCbCr. That last one is easy enough to fix by just using the correct name, but it doesn't seem like it's possible to use the other four.
When the C code checks the given input and output modes it checks against this list:
RGB,RGBA,RGBX,RGBA;16B,CMYK,L,L;16,L;16B,YCCA,YCC, andLAB.Pillow/src/_imagingcms.c
Lines 214 to 244 in e63ae38
However, only
RGB,RGBA,RGBX,CMYK,L, andLABare actual imaging modes.RGBA;16B,L;16, andL;16Bare rawmodes,YCCApartially exists as a rawmode namedYCCA;P, andYCCis a mode but is namedYCbCr. That last one is easy enough to fix by just using the correct name, but it doesn't seem like it's possible to use the other four.