Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Opacity information is lost when reading a P mode image with transparency information #48

Closed
alexwlchan opened this issue Apr 29, 2024 · 1 comment · Fixed by #56
Closed

Comments

@alexwlchan
Copy link

I spotted an instance where pillow_avif is losing transparency information about PNG images with mode P and a custom transparency value.

Here's a sample program that reproduces the issue:

from PIL import Image, ImageDraw
import pillow_avif

# Draw a basic checkerboard image
im = Image.new("P", size=(100, 100))

draw = ImageDraw.Draw(im)
draw.rectangle(xy=[(0, 0),   (50, 50)],   fill=255)
draw.rectangle(xy=[(50, 50), (100, 100)], fill=255)

# Save the image as a PNG, marking the 0'th colour in the palette as transparent
im.save("checkerboard.png", transparency=0)

# Open the image, then save it as an AVIF
opened_im = Image.open("checkerboard.png")
opened_im.save("checkerboard.avif")

This is how the two images get rendered on my Mac. Notice that the PNG correctly has two transparent regions, whereas the AVIF is solid black:

Screenshot 2024-04-29 at 22 34 43

I'm using pillow==10.3.0 and pillow-avif-plugin==1.4.3.

@alexwlchan
Copy link
Author

Note: this may have a similar underlying cause/fix to bigcat88/pillow_heif#235, which I spotted while writing this issue.

github-merge-queue bot pushed a commit to BSStudio/bss-web-file-api that referenced this issue Jul 9, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [pillow-avif-plugin](https://togithub.com/fdintino/pillow-avif-plugin)
| `1.4.3` -> `1.4.4` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/pillow-avif-plugin/1.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/pillow-avif-plugin/1.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/pillow-avif-plugin/1.4.3/1.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/pillow-avif-plugin/1.4.3/1.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>fdintino/pillow-avif-plugin (pillow-avif-plugin)</summary>

###
[`v1.4.4`](https://togithub.com/fdintino/pillow-avif-plugin/releases/tag/v1.4.4)

[Compare
Source](https://togithub.com/fdintino/pillow-avif-plugin/compare/v1.4.3...v1.4.4)

#### What's Changed

- chore(ci): bump libavif to
[`e10e6d9`](https://togithub.com/fdintino/pillow-avif-plugin/commit/e10e6d9)-2024-07-01;
fix CI build issues by [@&#8203;fdintino](https://togithub.com/fdintino)
in
[fdintino/pillow-avif-plugin#53.
See table below for new versions (all versions are upgrades from the
1.4.3 release).

    |             |            |
    |-------------|------------|
| **libavif** | <b>1.0.3
([e10e6d9](https://togithub.com/AOMediaCodec/libavif/commit/e10e6d98e6d1dbcdd409859a924d1b607a1e06dc))</b>
|
    | **libaom**  | **3.9.1**  |
    | **dav1d**   | **1.4.3**  |
    | **SVT-AV1** | **2.1.1**  |
    | **rav1e**   | **0.7.1**  |

- feat: Allow users to pass `max_threads` to the avif encoder via
`Image.save` by [@&#8203;yit-b](https://togithub.com/yit-b) in
[fdintino/pillow-avif-plugin#54,
originally in
[fdintino/pillow-avif-plugin#49

- feat: Let users pass `max_threads` as an argument to
`_avif.AvifDecoder` by [@&#8203;yit-b](https://togithub.com/yit-b) in
[fdintino/pillow-avif-plugin#50

- chore(ci): build SVT-AV1 for aarch64 or arm64 by
[@&#8203;RaphaelVRossi](https://togithub.com/RaphaelVRossi) in
[fdintino/pillow-avif-plugin#38

- fix: keep alpha channel for images with mode P and custom transparency
by [@&#8203;fdintino](https://togithub.com/fdintino) in
[fdintino/pillow-avif-plugin#56;
fixes
[fdintino/pillow-avif-plugin#48

- fix: disable decoder strictness for `clap` and `pixi` properties by
[@&#8203;fdintino](https://togithub.com/fdintino) in
[fdintino/pillow-avif-plugin#57.
fixes
[fdintino/pillow-avif-plugin#13,
fixes
[fdintino/pillow-avif-plugin#28

- fix(ci): lint secrets permission error and macOS GHA runner homebrew
`PATH` bug by [@&#8203;fdintino](https://togithub.com/fdintino) in
[fdintino/pillow-avif-plugin#55

#### New Contributors

- [@&#8203;RaphaelVRossi](https://togithub.com/RaphaelVRossi) made their
first contribution in
[fdintino/pillow-avif-plugin#38

**Full Changelog**:
fdintino/pillow-avif-plugin@v1.4.3...v1.4.4

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/BSStudio/bss-web-file-api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjUuMSIsInVwZGF0ZWRJblZlciI6IjM3LjQyNS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
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 a pull request may close this issue.

1 participant