Repository navigation
Conversation
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. Core Committers: Use this line as a base for the props when committing in SVN: To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. Props Bot commandsYou can trigger Props Bot actions by commenting on this PR:
|
Test using WordPress PlaygroundThe changes in this pull request can previewed and tested using a WordPress Playground instance. WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser. Some things to be aware of
For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation. |
When GD is the image editor and palette (indexed colour) images are converted to WebP or AVIF, for example a PNG-8 with
'image/png' => 'image/webp'set throughimage_editor_output_format, the full-size image is saved as a 0-byte file and PHP logsimagewebp(): Palette image not supported by webp. GD's WebP and AVIF encoders only accept truecolor images. Sub-sizes are not affected, because_resize()creates them withwp_imagecreatetruecolor().This PR converts palette images to truecolor with
imagepalettetotruecolor()right before encoding, when the output format is WebP or AVIF:WP_Image_Editor_GD::_save(): covers uploads, sub-size regeneration, and saves after editing.WP_Image_Editor_GD::stream(): covers the image editor preview, which otherwise returnstruewith empty output.The conversion is lossless and keeps transparency. Truecolor images, other output formats, and the Imagick editor are unchanged.
Trac ticket: https://core.trac.wordpress.org/ticket/59339
Use of AI Tools
AI assistance: Yes
Tool(s): Claude Code
Model(s): Claude Opus 5.5
Used for: Reproducing the issue, drafting the fix and the unit tests; the final implementation and tests were reviewed and tested by me.