mirror of
https://github.com/python-pillow/Pillow.git
synced 2025-01-12 18:26:17 +03:00
Consider transparency when drawing text on an RGBA image
This commit is contained in:
parent
a0d8e550ec
commit
e10cab42f1
BIN
Tests/images/transparent_background_text.png
Normal file
BIN
Tests/images/transparent_background_text.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
|
@ -236,7 +236,7 @@ class TestImagingPaste:
|
|||
[
|
||||
(127, 191, 254, 191),
|
||||
(111, 207, 206, 110),
|
||||
(127, 254, 127, 0),
|
||||
(255, 255, 255, 0) if mode == "RGBA" else (127, 254, 127, 0),
|
||||
(207, 207, 239, 239),
|
||||
(191, 191, 190, 191),
|
||||
(207, 206, 111, 112),
|
||||
|
|
|
@ -150,6 +150,18 @@ class TestImageFont:
|
|||
|
||||
assert_image_equal(img_path, img_filelike)
|
||||
|
||||
def test_transparent_background(self):
|
||||
im = Image.new(mode="RGBA", size=(300, 100))
|
||||
draw = ImageDraw.Draw(im)
|
||||
ttf = self.get_font()
|
||||
|
||||
txt = "Hello World!"
|
||||
draw.text((10, 10), txt, font=ttf)
|
||||
|
||||
target = "Tests/images/transparent_background_text.png"
|
||||
with Image.open(target) as target_img:
|
||||
assert_image_similar(im, target_img, 4.09)
|
||||
|
||||
def test_textsize_equal(self):
|
||||
im = Image.new(mode="RGB", size=(300, 100))
|
||||
draw = ImageDraw.Draw(im)
|
||||
|
|
|
@ -379,9 +379,13 @@ fill_mask_L(Imaging imOut, const UINT8* ink, Imaging imMask,
|
|||
UINT8* mask = (UINT8*) imMask->image[y+sy]+sx;
|
||||
for (x = 0; x < xsize; x++) {
|
||||
for (i = 0; i < pixelsize; i++) {
|
||||
*out = BLEND(*mask, *out, ink[i], tmp1);
|
||||
out++;
|
||||
UINT8 channel_mask = *mask;
|
||||
if (strcmp(imOut->mode, "RGBA") == 0 && i != 3) {
|
||||
channel_mask = 255 - (255 - channel_mask) * (1 - (255 - out[3]) / 255);
|
||||
}
|
||||
out[i] = BLEND(channel_mask, out[i], ink[i], tmp1);
|
||||
}
|
||||
out += pixelsize;
|
||||
mask++;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user