Yeah, this was my first thought. How many slightly older, no-longer-being-updated pieces of software will fail to open the new version? Hopefully it’s built in a way that it just falls back to legacy and ignores the extra information so you can at least load the file.
Popular photo and video editing apps like Photoshop, DaVinci Resolve, and Avid Media Composer already support it, alongside Chrome, Safari, and Firefox. Apple’s iOS and macOS also work with the new file standard.
This is all the article mentions. I hope you’re right about the backwards compatibility.
I remember the Wild West Web days when it was a toss up seeing if animated Gifs, transparencies in images, or the specific hexadecimal for your personal shade of purple you created would render properly between browsers.
I mean, that’s already how animated .gifs work. If somehow you manage to load one into a viewer that doesn’t support the animation functionality it will at least dutifully display the first frame.
How the hell you would manage to do that in this day and age escapes me, but there were a fair few years in the early '90s where you might run into that sort of thing.
Those are displayed in browser, right? The only reason that would be happening is if Piefeed is recompressing images and their code is not smart enough to identify an animated .gif and act accordingly.
tl;dr - it’s an issue with the pillow image library in python. It’s on our radar though. I got posts working, but you have to click through, the thumbnail still isn’t animated.
I’m probably gonna be massively downvoted for saying the forbidden word but I asked AI to do a summary with references of the forward and backward compatibility of PNG’s new version:
!
Based on recent search results, the new PNG specification (Third Edition) and its reference library (libpng) maintain strong backward compatibility while introducing modern features. Here’s a detailed compatibility analysis:
🔄 1. Backward Compatibility (Viewing Old PNGs with New Lib)
Full Support: The new libpng (1.6.49+) and PNG Third Edition fully support legacy PNG files. Existing PNGs (conforming to the 2003/2004 spec) will render correctly without changes .
Implementation Stability: Libpng’s API evolution (e.g., hiding png_struct/png_info internals since 1.5.0) ensures older apps using png_get_*/png_set_* functions remain compatible. Direct struct access, deprecated since 1.4.x, may break in libpng 2.0.x (C99-only) .
Security Enhancements: Critical vulnerabilities (e.g., CVE-2019-7317 in png_image_free()) were patched in libpng 1.6.37+, making the new lib safer for decoding old files .
⚠️ 2. Forward Compatibility (Viewing New PNGs with Old Lib)
Basic Support: Older libpng versions (pre-1.6.37) can decode new PNGs if they avoid new features. Core chunks like IHDR or IDAT remain unchanged .
New Feature Limitations:
HDR Imagery: Requires libpng 1.6.45+ and apps supporting the mDCv chunk. Older libs ignore HDR data, falling back to SDR, which may cause color inaccuracies .
APNG Animation: Officially standardized in PNG Third Edition. Older libs (e.g., <1.6) treat APNG as static images, showing only the first frame .
EXIF Metadata: New eXIf chunks are ignored by legacy decoders, losing metadata like GPS or copyright info .
Security Risks: Older libs (e.g., ≤1.6.36) contain unpatched vulnerabilities (e.g., CVE-2015-8126). Parsing malicious new PNGs could exploit these flaws .
📊 Compatibility Summary
Scenario
Compatibility
Key Considerations
Old PNG → New Lib
✅ Excellent
Legacy files work flawlessly; security improved.
New PNG → Old Lib
⚠️ Partial
Basic rendering works, but HDR/APNG/EXIF ignored. Security risks in unpatched versions.
New Features
🔧 Conditional
Requires updated apps (e.g., Photoshop, browsers) and OS support .
🔧 3. Implementation and Industry Adoption
Broad Support: Major browsers (Chrome, Safari, Firefox), OSs (iOS, macOS), and tools (Photoshop, DaVinci Resolve) already support the new spec .
Progressive Enhancement: New features like HDR use optional chunks, ensuring graceful degradation in older software .
Future-Proofing: Work on PNG Fourth Edition (HDR/SDR interoperability) and Fifth Edition (better compression) is underway .
💎 Conclusion
Upgrade Recommended: New libpng (1.6.49+) ensures security and full compatibility with legacy files.
Test Workflows: Verify critical tools handle new features (e.g., APNG animation in browsers).
Fallbacks for Old Systems: For environments stuck with outdated libs, convert new PNGs to legacy format (e.g., strip HDR/APNG) .
For developers: Use png_get_valid(png_ptr, info_ptr, PNG_INFO_mDCv) to check HDR support and provide fallbacks .
If you prefer to know nothing about PNG compatibility rather than something that might be true about PNG. That’s fine but definitely not my approach.
Also, as I said to another commenter. Critical thinking is not some tool you decide to use on some comments and not others. An AI answer on some topics is actually more likely to be correct than an answer by a human being. And it’s not some stuff I was told by an AI guru it’s what researchers are evaluating in many universities. Ask an human to complete various tasks and then ask the AI model and compare scientifically the data. And it turns out there is task where the AI outperforms the human pretty much all the time.
YET on this particular task the assumption is that it’s bullshit and it’s just downvoted. Now I would have posted the same data myself and for some reason I would not see a single downvote. The same data represented differently completely change the likelihood of it being accurate. Even though at the end of the day you shouldn’t trust blindly neither a comment from an human or an AI output.
Honestly, I’m saddened to see people already rejecting completely the technology instead of trying to understand what it’s good at and what it’s bad at and most importantly experiencing it themselves.
I wanted to know what was generative AI worth so I read about it and tried it locally with open source software. Now I know how to spot images that are AI generated, I know what’s difficult for this tech and what is not. I think that’s a much healthier attitude than blindly rejecting any and all AI outputs.
That depends. Something like HDR should be able to fall back to non-HDR since it largely just adds data, so if the format specifies that extra information is ignored, there’s a chance it works fine.
And that’s probably enough. I don’t know enough about HDR to know if it would look anything like the artist imagined, but as long as it’s close enough, it’s fine if it’s not optimal. Having things completely break is far less than ideal.
You’d probably get some colours that end up being quite off target. But you’ll get an image to display. So in the end it depends on how much “not optimal” you’re ready to accept.
Right, and it depends on what “quite off target” means. Are we talking about greens becoming purples? Or dark greens becoming bright greens? If the image is still mostly recognizable, just with poor saturation or contrast or whatever, I think it’s acceptable for older software.
So it depends on the specific HDR encoding used, Rec2020 is the most common ones you’ll see (It’s meant for “pure” setups, i.e. where the source and output are tightly linked, e.g. gaming consoles or blu-ray, or so) and the raw data won’t look great. While something like HLG (Hybrid-Log Gamma) is designed for better fallback (As it’s meant for TV broadcast, where the output device is “whatever TV the user has”), so should just look dimmer.
This is a HDR screenshot I took of Destiny 2, which uses Rec2020, tone mapped to SDR
And here’s the raw screenshot data from before tonemapping.
If the second image had all the right HDR metadata, and the viewer supported it properly, then both images would match.
But is it backwards compatible with an old version that can’t be updated?
Yeah, this was my first thought. How many slightly older, no-longer-being-updated pieces of software will fail to open the new version? Hopefully it’s built in a way that it just falls back to legacy and ignores the extra information so you can at least load the file.
This is all the article mentions. I hope you’re right about the backwards compatibility.
I remember the Wild West Web days when it was a toss up seeing if animated Gifs, transparencies in images, or the specific hexadecimal for your personal shade of purple you created would render properly between browsers.
Lies! That gif is sped up 2000%!
Ooh, that was the coaster company, I remember them.
I mean, that’s already how animated .gifs work. If somehow you manage to load one into a viewer that doesn’t support the animation functionality it will at least dutifully display the first frame.
How the hell you would manage to do that in this day and age escapes me, but there were a fair few years in the early '90s where you might run into that sort of thing.
One example is piefed unfortunately. Animated gifs as avatar or banner don’t animate currently as far as I can tell.
Those are displayed in browser, right? The only reason that would be happening is if Piefeed is recompressing images and their code is not smart enough to identify an animated .gif and act accordingly.
Yeah in browser. I should probably open an issue ticket if nobody else noticed yet.
Relevant issue: https://codeberg.org/rimu/pyfedi/issues/665
tl;dr - it’s an issue with the pillow image library in python. It’s on our radar though. I got posts working, but you have to click through, the thumbnail still isn’t animated.
I’m probably gonna be massively downvoted for saying the forbidden word but I asked AI to do a summary with references of the forward and backward compatibility of PNG’s new version:
Based on recent search results, the new PNG specification (Third Edition) and its reference library (libpng) maintain strong backward compatibility while introducing modern features. Here’s a detailed compatibility analysis:
🔄 1. Backward Compatibility (Viewing Old PNGs with New Lib)
png_struct
/png_info
internals since 1.5.0) ensures older apps usingpng_get_*
/png_set_*
functions remain compatible. Direct struct access, deprecated since 1.4.x, may break in libpng 2.0.x (C99-only) .png_image_free()
) were patched in libpng 1.6.37+, making the new lib safer for decoding old files .⚠️ 2. Forward Compatibility (Viewing New PNGs with Old Lib)
IHDR
orIDAT
remain unchanged .mDCv
chunk. Older libs ignore HDR data, falling back to SDR, which may cause color inaccuracies .eXIf
chunks are ignored by legacy decoders, losing metadata like GPS or copyright info .📊 Compatibility Summary
🔧 3. Implementation and Industry Adoption
💎 Conclusion
For developers: Use
png_get_valid(png_ptr, info_ptr, PNG_INFO_mDCv)
to check HDR support and provide fallbacks .!<
I do not have downvotes on my instance, so please, have a 👎
downvoters: is it wrong?
I don’t know. If the poster couldn’t be bothered to fact-check, why would I? It is just safer to assume that it can be misinformation.
If you prefer to know nothing about PNG compatibility rather than something that might be true about PNG. That’s fine but definitely not my approach.
Also, as I said to another commenter. Critical thinking is not some tool you decide to use on some comments and not others. An AI answer on some topics is actually more likely to be correct than an answer by a human being. And it’s not some stuff I was told by an AI guru it’s what researchers are evaluating in many universities. Ask an human to complete various tasks and then ask the AI model and compare scientifically the data. And it turns out there is task where the AI outperforms the human pretty much all the time.
YET on this particular task the assumption is that it’s bullshit and it’s just downvoted. Now I would have posted the same data myself and for some reason I would not see a single downvote. The same data represented differently completely change the likelihood of it being accurate. Even though at the end of the day you shouldn’t trust blindly neither a comment from an human or an AI output.
Honestly, I’m saddened to see people already rejecting completely the technology instead of trying to understand what it’s good at and what it’s bad at and most importantly experiencing it themselves.
I wanted to know what was generative AI worth so I read about it and tried it locally with open source software. Now I know how to spot images that are AI generated, I know what’s difficult for this tech and what is not. I think that’s a much healthier attitude than blindly rejecting any and all AI outputs.
Probably means there will be new PNGs that old software won’t be able to open.
It makes sense, right? Is there a way around that when adding new features to a file format?
The alternative is to make another file format for clarity, but it’s not really what you want to do.
That depends. Something like HDR should be able to fall back to non-HDR since it largely just adds data, so if the format specifies that extra information is ignored, there’s a chance it works fine.
I’m not sure you can turn an hdr image into a regular one just by snipping it down to 8 bits per channel and discarding the rest.
I mean it would work but I’m not certain you’ll get the best results.
And that’s probably enough. I don’t know enough about HDR to know if it would look anything like the artist imagined, but as long as it’s close enough, it’s fine if it’s not optimal. Having things completely break is far less than ideal.
You’d probably get some colours that end up being quite off target. But you’ll get an image to display. So in the end it depends on how much “not optimal” you’re ready to accept.
Right, and it depends on what “quite off target” means. Are we talking about greens becoming purples? Or dark greens becoming bright greens? If the image is still mostly recognizable, just with poor saturation or contrast or whatever, I think it’s acceptable for older software.
So it depends on the specific HDR encoding used, Rec2020 is the most common ones you’ll see (It’s meant for “pure” setups, i.e. where the source and output are tightly linked, e.g. gaming consoles or blu-ray, or so) and the raw data won’t look great. While something like HLG (Hybrid-Log Gamma) is designed for better fallback (As it’s meant for TV broadcast, where the output device is “whatever TV the user has”), so should just look dimmer.
This is a HDR screenshot I took of Destiny 2, which uses Rec2020, tone mapped to SDR
And here’s the raw screenshot data from before tonemapping.
If the second image had all the right HDR metadata, and the viewer supported it properly, then both images would match.