mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-11-10 19:56:47 +03:00
Added conversion from RGBa to RGB
This commit is contained in:
parent
a4ec9f331c
commit
5b4703d615
|
@ -104,6 +104,13 @@ def test_rgba_p():
|
|||
assert_image_similar(im, comparable, 20)
|
||||
|
||||
|
||||
def test_rgba():
|
||||
with Image.open("Tests/images/transparent.png") as im:
|
||||
assert im.mode == "RGBA"
|
||||
|
||||
assert_image_similar(im.convert("RGBa").convert("RGB"), im.convert("RGB"), 1.5)
|
||||
|
||||
|
||||
def test_trns_p(tmp_path):
|
||||
im = hopper("P")
|
||||
im.info["transparency"] = 0
|
||||
|
|
|
@ -479,6 +479,25 @@ rgba2rgbA(UINT8 *out, const UINT8 *in, int xsize) {
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
rgba2rgb_(UINT8 *out, const UINT8 *in, int xsize) {
|
||||
int x;
|
||||
unsigned int alpha;
|
||||
for (x = 0; x < xsize; x++, in += 4) {
|
||||
alpha = in[3];
|
||||
if (alpha == 255 || alpha == 0) {
|
||||
*out++ = in[0];
|
||||
*out++ = in[1];
|
||||
*out++ = in[2];
|
||||
} else {
|
||||
*out++ = CLIP8((255 * in[0]) / alpha);
|
||||
*out++ = CLIP8((255 * in[1]) / alpha);
|
||||
*out++ = CLIP8((255 * in[2]) / alpha);
|
||||
}
|
||||
*out++ = 255;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Conversion of RGB + single transparent color to RGBA,
|
||||
* where any pixel that matches the color will have the
|
||||
|
@ -934,6 +953,7 @@ static struct {
|
|||
{"RGBA", "HSV", rgb2hsv},
|
||||
|
||||
{"RGBa", "RGBA", rgba2rgbA},
|
||||
{"RGBa", "RGB", rgba2rgb_},
|
||||
|
||||
{"RGBX", "1", rgb2bit},
|
||||
{"RGBX", "L", rgb2l},
|
||||
|
|
Loading…
Reference in New Issue
Block a user