Skip to content

Consider transparency when pasting text on an RGBA image#4566

Merged
hugovk merged 2 commits into
python-pillow:masterfrom
radarhere:text
Jun 20, 2020
Merged

Consider transparency when pasting text on an RGBA image#4566
hugovk merged 2 commits into
python-pillow:masterfrom
radarhere:text

Conversation

@radarhere

@radarhere radarhere commented Apr 19, 2020

Copy link
Copy Markdown
Member

Resolves #4557

When drawing text on an RGBA image, Pillow blends each channel separately between the text and the image. This means that blending white text (255, 255, 255, 255) with a transparent black background (0, 0, 0, 0) can result in translucent grey, conceivably (127, 127, 127, 127) for example.

So instead, if filling L mask onto an RGBA image, weight each of the RGB values by the A value, so that none of (0, 0, 0, 0) is used because of it's zero alpha.

The difference can be seen in the 'New test' row below. Before, there was a black outline to the white text, and now, after. the the white text is hard to see on a transparent image against a white GitHub page.

This does change an existing test result for L mask on RGBA images. However, visually inspecting the images being compared shows no change.

___________________________ Before After
New test transparent_background_text transparent_background_text_after
Existing test existing_before existing_after

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Text outline on a transparent background

2 participants