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
Bounding box calculation discrepancy between 7.0.0 and 8.4.0 for RGBA #5914
Comments
Hi. If I save the image from your code, using one of our test images, from PIL import Image
my_image = Image.open("Tests/images/hopper.jpg").convert("RGBA")
my_image2 = my_image.point(lambda p: p if p < 220 else 0)
my_image2.save("out.png") I get this completely transparent image The purpose of
So if there are no non-zero regions, returning
|
I've created #5915 to fix the the (unrelated) oddity you've found in |
Hi Andrew, Thanks for the useful context around the change and for the info; it has helped to solve the issue. I agree that it does indeed sound like the function is now behaving properly which is great! |
What did you do?
I'm upgrading Pillow from 7.0.0 -> 8.4.0, and have noticed a discrepancy in what
img.getbbox()
returns for images that have the RGBA mode. It's worth mentioning that this is part of an upgrade in Python versions as well, from 3.7.9 -> 3.9.7 (although I'm not sure this is a cause).The toy example that demonstrates the difference:
Pillow 7.0.0 (Python 3.7.9)
Pillow 8.4.0 (Python 3.9.7)
If I remove the conversion to RGBA, however, then I get the same output as I did with 7.0.0.
It's also worth noting that
my_image2
is the same image in both versions (i.e. I saved them both and then usedImageChops.difference()
).What did you expect to happen?
I expected the output of
getbbox()
to be the same as with 7.0.0.What actually happened?
The output with 8.4.0 is None.
FWIW I noted some additions to the PIL.Image.load() logic between these two versions, which is unsurprising, but could be relevant. I believe
load()
is called within most functions, includinggetbbox()
.The line that caught my eye was 841 (the one that reads
if "transparency" in self.info and mode in ("RGBA", "LA", "PA"):
). Unless I'm reading this incorrectly, the addition of the check onmode
means that this won't ever evaluate toTrue
, becausemode
is set back toRGB
a few lines above?What are your OS, Python and Pillow versions?
OS: Mac OS
Python: 3.9.7
Pillow: 8.4
The text was updated successfully, but these errors were encountered: