w3c / png

Maintenance of the PNG specification
https://w3c.github.io/png/
Other
46 stars 11 forks source link

APNG implementation #38

Open svgeesus opened 2 years ago

svgeesus commented 2 years ago

This issue is for tracking implementations, including patches to libpng, to various browsers, etc.

Reading/Displaying APNG

Generating APNG

Of those TweakPNG looks useful for creating WPT tests and the source is on GitHub which might allow adding support for new chunks.

APNG tests

ProgramMax commented 2 years ago

Should there be a "needs implementation" label? Is that what the "implementation" label means?

Previously, I was thinking each issue should have 1 "needs ___" label to indicate how to make progress. But this is sort of a meta issue, covering both implementation and tests.

Maybe we should file separate issues, keep the 1 "needs ____" alive, and add a "needs child issue fixed" label?

ProgramMax commented 1 year ago

I learned WPT already has some tests for APNG.

svgeesus commented 1 year ago

Related (lack of interop)

svgeesus commented 1 year ago

Pull request for APNG tests https://github.com/web-platform-tests/wpt/pull/42893

svgeesus commented 10 months ago

Web Platform Tests for png now have 28 tests for APNG. Chrome (and Edge, and other blink-based browsers) pass 28/28, as does Firefox. Safari passes 22/28.

More tests should be added for error handling (testing fallback to the static PNG image if the APNG is invalid) which depends on

svgeesus commented 10 months ago

28/28 passes in two independent browsers (Chrome and Firefox) means that APNG meets the W3C criteria for interoperable implementation. Removing the blocking-exit tag, and leaving issue open to track implementation status for implementation report.

svgeesus commented 7 months ago

I see that the GIMP forum describes APNG as a deprecated format and encourages use of WebP instead. However there is a GIMP APNG plugin.

It requires a specific unofficial APNG patch to libpng (there are multiple patches that add APNG support, hindering interoperability)