libwebp Validation
Port build from safelibs/port-libwebp at commit cfa2ae93e9dc (release build-cfa2ae93e9dc)
Tests
cwebp dwebp round trip Original / libwebp / cwebp-dwebp-roundtrip Passed
libwebp C API decode smoke Original / libwebp / decode-c-api-smoke Passed
Malformed WebP rejection Original / libwebp / malformed-webp-rejection Passed
webpinfo inspection Original / libwebp / webpinfo-inspection Passed
webpmux metadata behavior Original / libwebp / webpmux-metadata Passed
ffmpeg APNG to animated WebP Original / libwebp / usage-ffmpeg-apng-to-webp-animation Passed
Builds an animated PNG via Pillow, transcodes it to animated WebP through ffmpeg's libwebp_anim encoder, and verifies the output is WebP with the expected dimensions.
ffmpeg libwebp_anim with explicit framerate Original / libwebp / usage-ffmpeg-libwebp-anim-fps Passed
Encodes three PPM frames to animated WebP via ffmpeg's libwebp_anim with -framerate 4 and verifies the output decodes back through Pillow with three frames at the source size.
ffmpeg WebP encode keeps alpha plane via yuva420p pix_fmt Original / libwebp / usage-ffmpeg-r10-webp-pix-fmt-yuva420p Passed
Encodes an RGBA PNG to WebP with -pix_fmt yuva420p and confirms the resulting WebP decodes back with an alpha channel preserved.
ffmpeg libwebp preset default produces a valid WebP Original / libwebp / usage-ffmpeg-r10-webp-preset-default Passed
Encodes a PNG to WebP via ffmpeg using -preset default and asserts the output is a WebP that decodes at the source dimensions.
ffmpeg libwebp accepts -compression_level 6 and emits a valid WebP Original / libwebp / usage-ffmpeg-r11-libwebp-compression-level-six Passed
Encodes an RGB PNG to WebP with -compression_level 6 (above the libwebp default of 4) and confirms the output is a structurally valid VP8 WebP.
ffmpeg libwebp -quality 100 produces a larger file than the default Original / libwebp / usage-ffmpeg-r11-libwebp-quality-100-larger-than-default Passed
Encodes the same noisy 200x200 RGB PNG twice via libwebp (default quality and -quality 100) and asserts the maximum-quality output is strictly larger, exercising the encoder quality knob.
ffmpeg libwebp -lossless 1 round-trips RGB pixels byte-for-byte Original / libwebp / usage-ffmpeg-r12-webp-lossless-flag-decodes-exactly Passed
Encodes a synthetic RGB PNG with ffmpeg -c:v libwebp -lossless 1 then decodes back to PPM via ffmpeg and asserts the output pixel buffer matches the input byte-for-byte.
ffmpeg libwebp encode -quality 5 produces a smaller file than -quality 95 Original / libwebp / usage-ffmpeg-r12-webp-quality-low-vs-high-size-monotonic Passed
Encodes the same RGB PNG to WebP twice via ffmpeg libwebp at -quality 5 and -quality 95 and confirms the low-quality file is strictly smaller, exercising the lossy quality scale.
ffmpeg libwebp -compression_level 6 yields no larger file than level 0 Original / libwebp / usage-ffmpeg-r13-webp-compression-level-zero-vs-six-size Passed
Encodes the same RGB PNG to lossless WebP with -compression_level 0 and 6 via ffmpeg libwebp and asserts the level-6 output is no larger than the level-0 output, exercising the libwebp method effort knob's monotonic size effect at constant content.
ffmpeg libwebp_anim -loop 0 produces a WEBP that Pillow reads as loop=0 Original / libwebp / usage-ffmpeg-r13-webp-loop-zero-infinite Passed
Encodes a 3-frame APNG to animated WEBP via ffmpeg's libwebp_anim with -loop 0 and asserts Pillow reopens the result with im.info["loop"] == 0 (infinite), exercising the muxer loop-count round-trip.
ffmpeg libwebp -lossless 1 round-trips RGB pixels exactly Original / libwebp / usage-ffmpeg-r14-webp-lossless-flag-vs-lossy-pixel-fidelity Passed
Encodes a synthetic RGB PNG to WebP with ffmpeg -c:v libwebp -lossless 1, decodes back to PNG, and asserts every pixel is byte-identical to the source via a Pillow tobytes() comparison, exercising the lossless encode/decode contract.
ffmpeg libwebp -quality 30 yields a no-larger file than -quality 90 Original / libwebp / usage-ffmpeg-r14-webp-quality-mid-vs-high-monotonic-size Passed
Encodes the same PNG to lossy WebP with ffmpeg libwebp at -quality 30 and -quality 90 (default lossy mode) and asserts the q30 file is no larger than q90, exercising the lossy quality knob's monotonic size effect through ffmpeg.
ffmpeg libwebp -frames:v 2 with a single PNG produces a still WebP that Pillow opens Original / libwebp / usage-ffmpeg-r15-webp-frames-v-2-still-output Passed
Encodes a single PNG to lossy WebP via ffmpeg libwebp with -frames:v 2 (more frames requested than provided) and asserts the output is recognised as WebP, opens cleanly via Pillow, and reports the original 32x24 dimensions, exercising ffmpeg's behaviour when -frames:v exceeds source duration on the still encoder.
ffmpeg libwebp -pix_fmt yuva420p preserves RGBA source through to a WebP that Pillow reads as RGBA Original / libwebp / usage-ffmpeg-r15-webp-pix-fmt-yuva420p-rgba-source Passed
Encodes an RGBA PNG to WebP via ffmpeg -c:v libwebp -pix_fmt yuva420p -frames:v 1 and asserts Pillow re-opens the result with mode == 'RGBA' and the original geometry, exercising the alpha-bearing pix_fmt round-trip through ffmpeg/libwebp.
ffmpeg -c:v libwebp -lossless 1 produces a WebP whose RIFF payload identifies as VP8L Original / libwebp / usage-ffmpeg-r16-libwebp-lossless-flag-produces-vp8l Passed
Encodes a small PNG to WEBP via ffmpeg -c:v libwebp -lossless 1, asserts the result carries the standard RIFF/WEBP header and contains a 'VP8L' four-character chunk identifier in the first 64 bytes — the libwebp lossless container signature.
ffmpeg libwebp_anim -loop 5 produces an animated WebP that Pillow reports with loop=5 Original / libwebp / usage-ffmpeg-r16-webp-libwebp-anim-loop-five Passed
Encodes a small synthetic two-frame PNG stream into an animated WebP via ffmpeg -c:v libwebp_anim -loop 5, re-opens the result with Pillow, and asserts is_animated is True and the info loop value is 5.
ffmpeg -vcodec libwebp -q:v 80 over a PNG input produces a still WEBP file Original / libwebp / usage-ffmpeg-r17-libwebp-quality-80-png-input-produces-webp Passed
Encodes a generated PNG to WEBP via ffmpeg's libwebp encoder at -q:v 80 with -lossless 0, and asserts the resulting file is identified as WEBP by file(1) and is non-empty.
ffmpeg decodes a WEBP into a PNG and ffprobe reports the original dims Original / libwebp / usage-ffmpeg-r18-libwebp-decode-png-rgb24-shape Passed
Encodes a generated PNG to WEBP via libwebp, then decodes the WEBP back to PNG with ffmpeg, and verifies ffprobe reports the original 80x60 dims on the PNG output to confirm the decode path through libwebp.
ffmpeg libwebp -preset text encodes a PNG to WEBP and is detected by file(1) Original / libwebp / usage-ffmpeg-r18-libwebp-preset-text-flag-accepted Passed
Encodes a synthetic PNG via ffmpeg's libwebp encoder with -preset text and -q:v 70, asserts the produced file is identified as WEBP, and that it is non-empty.
ffmpeg libwebp encode with -an results in a WEBP carrying exactly one video stream Original / libwebp / usage-ffmpeg-r19-libwebp-an-strips-audio-only-video Passed
Encodes a PNG to WEBP via ffmpeg with -an explicitly disabling audio, then runs ffprobe to count streams in the output and asserts exactly one video stream and zero audio streams are present.
ffprobe -show_streams reports codec_name=webp on a libwebp-encoded WEBP Original / libwebp / usage-ffmpeg-r19-libwebp-codec-name-webp-in-show-streams Passed
Encodes a PNG to WEBP through ffmpeg's libwebp encoder, then runs ffprobe with -show_streams in default key=value format and asserts the codec_name line equals 'webp', confirming the libwebp-produced file is identified as the webp codec.
ffmpeg libwebp -compression_level 3 encodes a PNG to a non-empty WEBP Original / libwebp / usage-ffmpeg-r19-libwebp-compression-level-three-flag-accepted Passed
Drives ffmpeg's libwebp encoder with -compression_level 3 against a generated PNG input, asserts file(1) identifies the output as WEBP, and that ffprobe reports the original 72x54 dimensions on the encoded file.
ffmpeg libwebp encoder from an rgb24 rawvideo source emits a valid RIFF/WEBP container Original / libwebp / usage-ffmpeg-r20-libwebp-encode-rgb24-source-produces-webp Passed
Pipes a 32x24 rgb24 rawvideo frame into ffmpeg's libwebp encoder and asserts the produced file begins with the RIFF/WEBP signature (RIFF....WEBP), pinning the rawvideo->libwebp encode path on Ubuntu 24.04.
ffprobe -show_frames on a libwebp-encoded still reports a positive pkt_size for the frame Original / libwebp / usage-ffmpeg-r20-libwebp-show-frames-pkt-size-positive Passed
Encodes a PNG to WEBP via ffmpeg's libwebp encoder, then runs ffprobe -show_frames -of csv on the v:0 stream and asserts the captured pkt_size column is an integer greater than zero, confirming the libwebp-produced frame has a non-empty packet payload.
ffmpeg libwebp -preset icon emits a RIFF/WEBP file for a small rgb24 frame Original / libwebp / usage-ffmpeg-r21-libwebp-preset-icon-flag-accepted Passed
Encodes a 16x16 rgb24 rawvideo frame through ffmpeg's libwebp encoder with -preset icon and asserts the output starts with RIFF/WEBP magic, pinning ffmpeg's icon preset routing through libwebp on Ubuntu 24.04.
ffmpeg libwebp accepts -preset photo and produces a RIFF/WEBP file Original / libwebp / usage-ffmpeg-r21-libwebp-preset-photo-flag-accepted Passed
Encodes a tiny rgb24 rawvideo source through ffmpeg's libwebp encoder with -preset photo, asserts the resulting file begins with RIFF....WEBP, pinning libwebp's photo preset propagation through the ffmpeg wrapper on Ubuntu 24.04.
ffmpeg libwebp encoder produces strictly smaller output at q=5 than q=95 from identical rawvideo Original / libwebp / usage-ffmpeg-r21-libwebp-quality-monotonic-q5-q95 Passed
Encodes the same 64x48 rgb24 rawvideo frame twice via ffmpeg's libwebp encoder at -quality 5 and -quality 95, asserting the q=5 output is strictly smaller than the q=95 output — pinning ffmpeg's libwebp -quality knob to libwebp's quality/size curve on Ubuntu 24.04.
ffmpeg encodes WebP from RGBA source Original / libwebp / usage-ffmpeg-r9-webp-pix-fmt-rgba Passed
Generates an RGBA PNG via ffmpeg testsrc-like nullsrc, encodes WebP with -pix_fmt yuva420p, and probes the result has webp codec.
ffmpeg WebP low quality is smaller than high quality Original / libwebp / usage-ffmpeg-r9-webp-quality-five-vs-eighty Passed
Encodes the same source PNG twice with libwebp -q 5 and -q 95 and asserts the higher-quality file is larger than the lower-quality one.
ffmpeg WebP to BMP Original / libwebp / usage-ffmpeg-webp-bmp Passed
ffmpeg WebP encode with explicit -compression_level 6 Original / libwebp / usage-ffmpeg-webp-compression-level-explicit-six Passed
Encodes a synthesized PPM frame to WebP with ffmpeg using -compression_level 6 explicitly along with -qscale:v 75, then verifies the output WebP magic and that ffprobe reports the expected width/height.
ffmpeg WebP compression level encode Original / libwebp / usage-ffmpeg-webp-compression-level Passed
ffmpeg webp decode Original / libwebp / usage-ffmpeg-webp-decode Passed
ffmpeg WebP encode passes -metadata title= without error Original / libwebp / usage-ffmpeg-webp-encode-with-metadata-title Passed
Encodes a PNG to WebP via ffmpeg while passing -metadata title=validator-libwebp; libwebp does not persist generic metadata to a still WebP, so this asserts only that ffmpeg accepts the option, the resulting file is valid WebP with the original dimensions, and ffprobe re-opens it cleanly.
ffmpeg WebP encode with -fpsmax 30 cap Original / libwebp / usage-ffmpeg-webp-fpsmax-cap Passed
Encodes a single PNG frame to WebP with ffmpeg using -fpsmax 30 as a frame-rate ceiling and verifies the output is WebP with the expected dimensions.
ffmpeg WebP encode with -frames:v 1 Original / libwebp / usage-ffmpeg-webp-frames-v-single Passed
Encodes a single-frame WebP from a raw input through ffmpeg with -frames:v 1 and verifies the output via file magic and ffprobe dimensions.
ffmpeg WebP from raw rgb24 stream Original / libwebp / usage-ffmpeg-webp-from-rawvideo-rgb24 Passed
Feeds a raw rgb24 stream through ffmpeg's rawvideo demuxer, encodes it as WebP via libwebp, and verifies the result with file magic and dimensions.
ffmpeg WebP encode with -global_quality Original / libwebp / usage-ffmpeg-webp-global-quality Passed
Encodes a synthetic PNG to WebP with ffmpeg libwebp using the AVCodecContext -global_quality knob (FF_QP2LAMBDA-scaled) and verifies the output is a valid WebP at the expected dimensions.
ffmpeg WebP hint photo encode Original / libwebp / usage-ffmpeg-webp-hint-photo Passed
Encodes a PPM frame to lossy WebP through ffmpeg's libwebp encoder using -preset photo and confirms the output is a valid WebP with the expected dimensions.
ffmpeg converts WebP to JPEG Original / libwebp / usage-ffmpeg-webp-jpeg Passed
Decodes a WebP image through ffmpeg and writes JPEG output, then verifies the resulting JPEG file format.
ffmpeg WebP loop duration Original / libwebp / usage-ffmpeg-webp-loop-duration Passed
Loops a still WebP through ffmpeg with -loop 1 -t to produce a multi-frame MP4 of a known duration and verifies it via ffprobe.
ffmpeg libwebp_anim explicit loop count Original / libwebp / usage-ffmpeg-webp-loop-three Passed
Encodes a multi-frame animated WebP through ffmpeg libwebp_anim with -loop 3 and verifies Pillow reads back the loop count from im.info.
ffmpeg WebP transcoded between lossless and lossy Original / libwebp / usage-ffmpeg-webp-lossless-to-lossy-transcode Passed
Encodes a PPM source to a lossless WebP via ffmpeg, then re-encodes that lossless WebP to a lossy WebP, asserting both outputs are valid WebP with matching dimensions.
ffmpeg WebP MD5 Original / libwebp / usage-ffmpeg-webp-md5 Passed
ffmpeg WebP to MP4 Original / libwebp / usage-ffmpeg-webp-mp4-frames Passed
ffmpeg WebP null output Original / libwebp / usage-ffmpeg-webp-null-output Passed
Decodes WebP input through ffmpeg null output mode and verifies processing statistics are printed.
ffmpeg WebP PGM output Original / libwebp / usage-ffmpeg-webp-pgm-output Passed
Decodes a WebP fixture with ffmpeg using gray pixel format and verifies the resulting PGM file begins with the P5 magic header.
ffmpeg WebP encode with explicit pix_fmt yuv420p Original / libwebp / usage-ffmpeg-webp-pix-fmt-yuv420p Passed
Encodes a PNG to WebP through ffmpeg libwebp forcing -pix_fmt yuv420p and verifies the output is a valid WebP at the expected dimensions and that ffprobe reports yuv420p as the pixel format.
ffmpeg WebP to PNG with -ss seek Original / libwebp / usage-ffmpeg-webp-png-seek-frame Passed
Loops a still WebP under ffmpeg with -loop 1 and -ss to seek into the synthetic timeline, decodes a single frame to PNG, and verifies the PNG output.
ffmpeg WebP to PNG Original / libwebp / usage-ffmpeg-webp-png Passed
ffmpeg WebP preset drawing encode Original / libwebp / usage-ffmpeg-webp-preset-drawing Passed
Encodes a PPM frame to WebP via ffmpeg with -preset drawing and verifies ffprobe reports the webp codec at the original dimensions.
ffmpeg WebP preset picture encode Original / libwebp / usage-ffmpeg-webp-preset-picture Passed
Encodes a PPM frame to WebP via ffmpeg using libwebp -preset picture and verifies the output magic and dimensions.
ffmpeg webp probe Original / libwebp / usage-ffmpeg-webp-probe Passed
ffmpeg WebP quality encode Original / libwebp / usage-ffmpeg-webp-quality-encode Passed
ffmpeg WebP -q:v low vs high size monotonic Original / libwebp / usage-ffmpeg-webp-quality-vs-high Passed
Encodes the same PPM source via ffmpeg libwebp at low and high -q:v values and asserts the higher quality output is strictly larger.
ffmpeg libwebp_anim from RGBA PNG sequence Original / libwebp / usage-ffmpeg-webp-rgba-png-anim Passed
Encodes three RGBA PNG frames with varying alpha into an animated WebP via ffmpeg's libwebp_anim and verifies Pillow reports n_frames>=3 with mode containing alpha after seek.
ffmpeg WebP encode then decode back to PPM Original / libwebp / usage-ffmpeg-webp-roundtrip-to-ppm Passed
Encodes a synthesized PPM frame to WebP with ffmpeg using -lossless 1, then re-decodes the WebP via ffmpeg back to a PPM image and asserts the decoded PPM has the original dimensions and the file magic 'Netpbm image data'.
ffmpeg WebP encode with explicit -vf scale dimensions Original / libwebp / usage-ffmpeg-webp-scale-explicit-dims Passed
Encodes a PPM source to WebP with ffmpeg while forcing a specific output size via -vf scale=W:H, then re-probes the WebP to confirm the encoded dimensions match.
FFmpeg WebP scale filter Original / libwebp / usage-ffmpeg-webp-scale-filter Passed
ffmpeg WebP TIFF output Original / libwebp / usage-ffmpeg-webp-tiff-output Passed
Decodes a WebP fixture with ffmpeg to a TIFF and verifies file reports the result as TIFF image data.
ffprobe -of csv reports webp codec on a WebP stream Original / libwebp / usage-ffprobe-r10-webp-of-csv-streams Passed
Encodes a WebP via ffmpeg then runs ffprobe with -of csv -show_streams and asserts a webp codec name appears in the CSV output.
ffprobe reads WebP dimensions Original / libwebp / usage-ffprobe-webp-dimensions Passed
ffprobe WebP format metadata Original / libwebp / usage-ffprobe-webp-format-name Passed
Runs ffprobe on a WebP fixture and validates the demuxer-reported format name and codec name surface as 'webp'.
ffprobe -show_chapters on still WebP is empty Original / libwebp / usage-ffprobe-webp-show-chapters-empty Passed
A still WebP image has no chapter markers, so ffprobe -show_chapters must succeed and emit no [CHAPTER] sections. This testcase encodes a PNG to WebP with ffmpeg and then verifies the chapter listing is empty while format/stream info is still readable.
ffprobe -show_format on WebP Original / libwebp / usage-ffprobe-webp-show-format Passed
Runs ffprobe with -show_format on a WebP fixture and verifies the [FORMAT] block plus a webp format_name surface in the output.
ffprobe show_packets on WebP Original / libwebp / usage-ffprobe-webp-show-packets Passed
Runs ffprobe -show_packets on a WebP fixture and verifies at least one packet is reported with codec_type=video.
ffprobe -show_streams WebP width/height Original / libwebp / usage-ffprobe-webp-show-streams-dims Passed
Runs ffprobe with -show_streams against a WebP image and asserts the parsed width/height from the full stream dump.
ffprobe -show_streams on WebP exposes a stream block Original / libwebp / usage-ffprobe-webp-show-streams-tags Passed
Encodes a PNG to WebP with ffmpeg, then runs ffprobe -show_streams and confirms the output contains a [STREAM] section, the codec_name=webp tag, and the expected width/height.
SDL2_image loads WebP Original / libwebp / usage-libsdl2-image-load-webp Passed
SDL2_image IMG_LoadTyped_RW with explicit WEBP type Original / libwebp / usage-libsdl2-image-r10-webp-load-typed-rw Passed
Encodes a small WebP and loads it via IMG_LoadTyped_RW("WEBP") rather than IMG_Load to verify the typed-loader path resolves the WebP decoder.
SDL2_image WebP loaded surface pitch equals width * bytes-per-pixel Original / libwebp / usage-libsdl2-image-r10-webp-pitch-equals-width-times-bytes Passed
Loads a 16x16 lossless WebP via SDL2_image, converts to a known RGBA8888 format, and asserts surface->pitch equals width * 4 with no row padding inserted.
SDL2_image IMG_Linked_Version reports the SDL2 major version Original / libwebp / usage-libsdl2-image-r11-img-linked-version-major-two Passed
Compiles a tiny C program that calls IMG_Linked_Version() and asserts the runtime-reported SDL_image major matches the SDL2 ABI (2.x), proving the WebP-aware build is loaded.
SDL2_image IMG_LoadAnimation reports the WebP frame count Original / libwebp / usage-libsdl2-image-r11-img-loadanimation-frame-count Passed
Builds a 3-frame animated WebP via Pillow then loads it through IMG_LoadAnimation, asserting the returned IMG_Animation reports count==3 and matches the source geometry.
SDL2_image IMG_isWEBP returns true for a real WebP RWops Original / libwebp / usage-libsdl2-image-r12-img-iswebp-detects-webp Passed
Saves a small RGB WebP via Pillow, opens it through SDL_RWFromFile, and asserts IMG_isWEBP(rw) returns 1, confirming the SDL2_image probe is wired into the libwebp-aware build.
SDL2_image IMG_Load on a lossless RGB WebP returns a 24/32-bit surface Original / libwebp / usage-libsdl2-image-r13-webp-img-load-rgb-pixel-format Passed
Saves an opaque RGB lossless WebP via Pillow, loads it through IMG_Load, and asserts the surface BitsPerPixel is 24 or 32 (RGB or RGBA), confirming SDL2_image presents the WebP-decoded surface in a normal pixel format.
SDL2_image IMG_Load on a WebP returns a surface with pitch >= width * BytesPerPixel Original / libwebp / usage-libsdl2-image-r14-webp-img-load-pitch-positive Passed
Saves a small RGB WebP via Pillow, loads it via IMG_Load, and asserts the SDL_Surface pitch is >= width*BytesPerPixel (the row-stride lower bound), exercising the surface-stride invariant after a libwebp decode.
SDL2_image IMG_Load on a lossless RGBA WebP returns a 32-bit surface Original / libwebp / usage-libsdl2-image-r14-webp-img-load-rgba-surface-bpp-32 Passed
Saves a lossless RGBA WebP via Pillow, loads it through IMG_Load, and asserts the surface BitsPerPixel is exactly 32 (RGBA), confirming SDL2_image presents the alpha-bearing WebP-decoded surface in a 32-bit pixel format.
SDL2_image IMG_Load_RW from an in-memory WebP buffer returns a non-null surface Original / libwebp / usage-libsdl2-image-r15-webp-img-load-rw-from-memory-buffer Passed
Saves a small RGB WebP via Pillow, loads its bytes into a heap buffer, wraps it with SDL_RWFromMem, and calls IMG_Load_RW(rw, 1, NULL) — asserting the returned SDL_Surface is non-null and reports the original dimensions, exercising the in-memory RWops decode path on a libwebp-decoded image.
SDL2_image IMG_Init(IMG_INIT_WEBP) sets the WEBP flag in its return mask Original / libwebp / usage-libsdl2-image-r17-img-init-webp-bit-set Passed
Compiles a tiny C program that calls IMG_Init(IMG_INIT_WEBP) and asserts the returned bitmask has the WEBP bit set, confirming the SDL2_image build can dynamically activate WebP support backed by libwebp.
SDL2_image IMG_Linked_Version reports a non-null SDL_version with positive major Original / libwebp / usage-libsdl2-image-r18-img-linked-version-positive Passed
Compiles a small C program that calls IMG_Linked_Version() and prints the runtime-linked SDL_image version, then asserts the pointer is non-null and the major component is at least 2 — sanity-checking the SDL2_image library load that backs the libwebp decoder path.
SDL2_image IMG_Load on a Pillow-generated WEBP returns a surface with expected width/height Original / libwebp / usage-libsdl2-image-r18-img-load-webp-surface-w-h Passed
Generates a 48x36 WEBP via Pillow, loads it through SDL2_image's IMG_Load, and asserts the resulting SDL_Surface reports width=48 and height=36 before freeing it — exercising the libwebp-backed decoder path in SDL2_image.
SDL2_image IMG_Load_RW on RGB WEBP returns a surface with BytesPerPixel of 3 or 4 Original / libwebp / usage-libsdl2-image-r19-img-load-rw-webp-bpp-twentyfour Passed
Generates an RGB WEBP via Pillow, opens it through SDL_RWFromFile, calls IMG_Load_RW with freesrc=1, and asserts the surface format BytesPerPixel value is 3 (RGB24) or 4 (RGBA32) — pinning the libwebp-backed IMG_Load_RW path.
SDL2_image IMG_SavePNG writes a non-empty PNG from a WEBP-loaded surface Original / libwebp / usage-libsdl2-image-r19-img-savepng-from-loaded-webp Passed
Generates a WEBP via Pillow, loads it through IMG_Load into an SDL surface, calls IMG_SavePNG to write a PNG copy, and asserts the resulting PNG is non-empty and identified as a PNG image by file(1) — pinning the libwebp-load + libsdl2-image-save chain.
SDL2_image IMG_isWEBP returns 1 for a Pillow-encoded WEBP RWops stream Original / libwebp / usage-libsdl2-image-r20-img-iswebp-rwops-returns-one Passed
Generates an RGB WEBP via Pillow, opens it as an SDL_RWops, calls IMG_isWEBP on the RWops and asserts the return value equals 1 — pinning SDL2_image's WEBP probe through libwebp's signature recognition.
SDL2_image IMG_Load on a WEBP returns a surface whose width and height match the source Original / libwebp / usage-libsdl2-image-r20-img-load-webp-size-matches Passed
Saves a 72x48 RGB WEBP via Pillow, calls SDL2_image IMG_Load directly on the file path and asserts the returned SDL_Surface reports w=72 and h=48 — pinning the libwebp-backed IMG_Load path's dimension exposure.
SDL2_image IMG_Load on a WEBP yields a surface with a non-null pixels pointer Original / libwebp / usage-libsdl2-image-r21-img-load-webp-pixels-non-null Passed
Generates a small RGB WEBP via Pillow, calls IMG_Load from a tiny C harness, asserts the returned SDL_Surface has a non-null pixels pointer and positive pitch — pinning SDL2_image's WebP loader path through libwebp on Ubuntu 24.04.
SDL2_image WEBP-loaded surface blits successfully onto a blank target surface Original / libwebp / usage-libsdl2-image-r21-webp-blit-onto-blank-surface Passed
Loads a WEBP via IMG_Load, allocates an RGBA target surface with SDL_CreateRGBSurface, blits the WEBP surface onto it via SDL_BlitSurface and asserts the call succeeds (return 0) — pinning SDL2_image+libwebp+SDL_BlitSurface interop on Ubuntu 24.04.
SDL2_image WebP pixel readback after load Original / libwebp / usage-libsdl2-image-r9-webp-pixel-readback Passed
Encodes a uniform red 4x4 PPM as lossless WebP, loads via SDL2_image into a 32-bit RGBA8888 surface, and asserts the centre pixel reads back as the expected red.
SDL2_image WebP alpha Original / libwebp / usage-libsdl2-image-webp-alpha Passed
SDL2_image IMG_isWEBP detection Original / libwebp / usage-libsdl2-image-webp-detect Passed
Compiles an SDL2_image client that opens a WebP fixture as an SDL_RWops, asserts IMG_isWEBP returns nonzero, then loads the surface via IMG_LoadWEBP_RW and confirms reported dimensions match.
SDL2_image WebP IMG_isWEBP detection Original / libwebp / usage-libsdl2-image-webp-isfile Passed
SDL2_image IMG_LoadWEBP_RW size check Original / libwebp / usage-libsdl2-image-webp-load-rw-size Passed
Compiles a minimal SDL2_image client that opens a WebP fixture via SDL_RWFromFile, decodes it through IMG_LoadWEBP_RW directly (bypassing the format-detection dispatch), prints the SDL_Surface dimensions, and asserts the surface is non-NULL with the expected 4x3 size.
SDL2_image IMG_LoadTexture WebP dimensions Original / libwebp / usage-libsdl2-image-webp-load-texture-dim Passed
Compiles an SDL2_image client that creates a software renderer and IMG_LoadTexture from a WebP, verifying the texture query reports the expected dimensions.
SDL2_image WebP surface BytesPerPixel Original / libwebp / usage-libsdl2-image-webp-pixel-format Passed
Compiles a minimal SDL2_image client that loads a WebP fixture via IMG_Load and reports the SDL_Surface BytesPerPixel along with size, asserting a 3-or-4 byte-per-pixel surface at 4x3 (libwebp returns RGB for opaque lossy WebP and RGBA when an alpha channel is present).
SDL2_image WebP RWops Original / libwebp / usage-libsdl2-image-webp-rwops Passed
SDL2_image WEBP version probe Original / libwebp / usage-libsdl2-image-webp-version-probe Passed
Compiles an SDL2_image client that calls IMG_Linked_Version, asserts the linked version is non-NULL with major==2, initialises IMG_INIT_WEBP, and confirms a WebP fixture loads through the same library.
Pillow add mirror WebP Original / libwebp / usage-python3-pil-add-mirror-webp Passed
Uses Pillow ImageChops.add on a generated WebP and its mirrored copy and verifies the summed pixel values before round-tripping.
python PIL autocontrast WebP Original / libwebp / usage-python3-pil-autocontrast-webp Passed
Pillow blend mirror WebP Original / libwebp / usage-python3-pil-blend-mirror-webp Passed
Blends a generated WebP with its mirrored copy in Pillow and verifies the blended pixel average before round-tripping.
python PIL border expand WebP Original / libwebp / usage-python3-pil-border-expand-webp Passed
python PIL canvas paste WebP Original / libwebp / usage-python3-pil-canvas-paste-webp Passed
Pillow composite halves WebP Original / libwebp / usage-python3-pil-composite-halves-webp Passed
Composites a generated WebP with its mirrored copy through a half-image mask in Pillow and verifies left and right pixels come from different sources.
python PIL contain WebP Original / libwebp / usage-python3-pil-contain-webp Passed
Pillow convert webp Original / libwebp / usage-python3-pil-convert-webp Passed
Pillow crops WebP Original / libwebp / usage-python3-pil-crop-webp Passed
Pillow darker mirror WebP Original / libwebp / usage-python3-pil-darker-mirror-webp Passed
Uses Pillow ImageChops.darker on a generated WebP and its mirrored copy and verifies the per-channel minima before round-tripping.
python PIL equalize WebP Original / libwebp / usage-python3-pil-equalize-webp Passed
python PIL blur filter WebP Original / libwebp / usage-python3-pil-filter-blur-webp Passed
python PIL fit WebP Original / libwebp / usage-python3-pil-fit-webp Passed
Pillow flips WebP Original / libwebp / usage-python3-pil-flip-webp Passed
python PIL getextrema WebP Original / libwebp / usage-python3-pil-getextrema-webp Passed
python PIL histogram WebP Original / libwebp / usage-python3-pil-histogram-webp Passed
Pillow invert generated WebP Original / libwebp / usage-python3-pil-invert-generated-webp Passed
Uses Pillow ImageOps.invert on a generated WebP and verifies the inverted channel values before round-tripping.
python PIL L mode WebP Original / libwebp / usage-python3-pil-l-mode-webp Passed
Pillow lighter mirror WebP Original / libwebp / usage-python3-pil-lighter-mirror-webp Passed
Uses Pillow ImageChops.lighter on a generated WebP and its mirrored copy and verifies the per-channel maxima before round-tripping.
Pillow lossless alpha WebP Original / libwebp / usage-python3-pil-lossless-alpha-webp Passed
Pillow lossless WebP Original / libwebp / usage-python3-pil-lossless-webp Passed
Pillow opens WebP from memory Original / libwebp / usage-python3-pil-memory-open-webp Passed
Loads a WebP image from an in-memory byte buffer with Pillow and verifies the decoded dimensions.
Pillow mirrors WebP Original / libwebp / usage-python3-pil-mirror-webp Passed
Mirrors a WebP image horizontally with Pillow and verifies the output dimensions remain unchanged.
Pillow multiply mirror WebP Original / libwebp / usage-python3-pil-multiply-mirror-webp Passed
Uses Pillow ImageChops.multiply on a generated WebP and its mirrored copy and verifies the multiplied pixel values before round-tripping.
python PIL offset WebP Original / libwebp / usage-python3-pil-offset-webp Passed
Pillow open webp Original / libwebp / usage-python3-pil-open-webp Passed
python PIL pad WebP Original / libwebp / usage-python3-pil-pad-webp Passed
Pillow pastes WebP onto canvas Original / libwebp / usage-python3-pil-paste-canvas-webp Passed
Pastes a WebP image onto a larger RGB canvas with Pillow and verifies the saved output dimensions.
Pillow point offset WebP Original / libwebp / usage-python3-pil-point-offset-webp Passed
Applies a point-wise channel offset to a WebP image with Pillow and verifies the transformed output remains decodable.
python PIL posterize WebP Original / libwebp / usage-python3-pil-posterize-webp Passed
python PIL quantize WebP Original / libwebp / usage-python3-pil-quantize-webp Passed
Pillow WebP animation info exposes loop count Original / libwebp / usage-python3-pil-r10-webp-info-loop-key Passed
Saves a 3-frame animated WebP with loop=2 via Pillow, reopens it, and asserts the info dict reports loop == 2 and is_animated is True.
Pillow WebP encode at quality=0 still produces a decodable image Original / libwebp / usage-python3-pil-r10-webp-quality-zero-roundtrip Passed
Saves a generated RGB image via Pillow with WebP quality=0 (smallest lossy) and verifies it reloads at the original size with format WEBP.
Pillow animated WEBP defaults info["loop"] to 0 (infinite) Original / libwebp / usage-python3-pil-r11-webp-anim-default-loop-zero Passed
Saves a 3-frame RGB WebP animation without an explicit loop= argument and confirms re-opening reports info["loop"] == 0 and n_frames == 3, exercising the libwebpmux loop-count default.
Pillow WEBP icc_profile= survives lossless save/load byte-for-byte Original / libwebp / usage-python3-pil-r11-webp-icc-profile-roundtrip Passed
Builds an sRGB ICC profile via PIL.ImageCms, saves a lossless WebP with that icc_profile=, and re-opens to confirm im.info["icc_profile"] equals the source bytes exactly.
Pillow animated WEBP with loop=3 preserves the loop count on read-back Original / libwebp / usage-python3-pil-r12-webp-anim-explicit-loop-three Passed
Saves a 2-frame WEBP animation with an explicit loop=3 argument and confirms reopening reports im.info["loop"] == 3 and n_frames == 2, exercising the libwebpmux loop-count round-trip.
Pillow WEBP exact=True preserves fully transparent RGBA pixels losslessly Original / libwebp / usage-python3-pil-r12-webp-exact-flag-rgba-roundtrip Passed
Saves an RGBA image with fully transparent pixels carrying nonzero color via Pillow with lossless=True and exact=True, then reopens and asserts the alpha=0 pixels keep their original RGB values byte-for-byte.
Pillow WEBP save method=6 round-trips geometry and format Original / libwebp / usage-python3-pil-r12-webp-method-six-roundtrip Passed
Saves a small RGB image as WEBP with method=6 (slowest/best compression) and reopens to confirm the file is detected as WEBP at the original dimensions, exercising the libwebp method effort knob.
Pillow animated WEBP with per-frame duration list reports matching frame count Original / libwebp / usage-python3-pil-r13-webp-anim-duration-list-roundtrip Passed
Saves a 3-frame animated WEBP with a per-frame duration list ([60, 120, 180]) and verifies n_frames is 3 on read-back and the file decodes with a non-zero info["duration"] per frame, exercising the libwebpmux per-frame duration list path.
Pillow animated WEBP minimize_size=True round-trips frame count Original / libwebp / usage-python3-pil-r13-webp-minimize-size-flag Passed
Saves a 3-frame WEBP animation with minimize_size=True (which forces libwebpmux to recompute frame deltas) and confirms n_frames is preserved on read-back, exercising the libwebpmux size-minimisation path.
Pillow WEBP default-quality save reloads as a same-size RGB image Original / libwebp / usage-python3-pil-r13-webp-rgb-mode-default-quality Passed
Saves a 32x24 RGB Pillow image as WEBP without any quality= argument and confirms the reload preserves size, format=WEBP, and the file's RIFF/WEBP magic header bytes.
Pillow animated WEBP background= round-trips through im.info["background"] Original / libwebp / usage-python3-pil-r14-webp-info-background-rgba-roundtrip Passed
Saves a 2-frame animated WEBP with background=(50, 100, 150, 255) and re-opens to confirm im.info["background"] is a 4-tuple of integer channel values, exercising the libwebpmux ANIM canvas background colour persistence path. Pillow returns the value as a tuple regardless of exact bit-perfect storage.
Pillow animated WEBP loop=5 round-trips through im.info["loop"] Original / libwebp / usage-python3-pil-r14-webp-info-loop-roundtrip-five Passed
Saves a 3-frame animated WEBP with loop=5 and re-opens to confirm im.info["loop"] is exactly 5, exercising the libwebpmux loop count round-trip with a non-zero finite repeat count.
Pillow animated WEBP with three frames reports n_frames == 3 and is_animated == True Original / libwebp / usage-python3-pil-r15-webp-anim-frame-count-three Passed
Saves a 3-frame animated RGB WEBP via Pillow's save_all/append_images and re-opens to confirm im.n_frames is exactly 3 and im.is_animated is True, exercising the libwebpmux animation chunk count round-trip.
Pillow lossless RGBA WEBP reload reports getbands() == ('R', 'G', 'B', 'A') Original / libwebp / usage-python3-pil-r15-webp-getbands-rgba-four Passed
Saves an RGBA Pillow image as lossless WEBP, reloads, and asserts im.mode == 'RGBA' and im.getbands() returns the canonical 4-tuple ('R', 'G', 'B', 'A'), exercising libwebp's alpha-channel preservation through Pillow.
Pillow WEBP save method=6 yields a no-larger file than method=0 at constant quality Original / libwebp / usage-python3-pil-r15-webp-method-zero-vs-six-monotonic-size Passed
Saves the same RGB image as WEBP via Pillow twice — once with method=0 (fastest) and once with method=6 (best) at quality=80 — and asserts the method=6 file size is no larger than method=0, exercising the libwebp method effort knob's monotonic size effect through Pillow.
Pillow WEBP exact=True lossless round-trip preserves RGB values under a fully-transparent alpha pixel Original / libwebp / usage-python3-pil-r16-webp-exact-flag-rgb-transparent-preserved Passed
Crafts an RGBA image with a colored pixel whose alpha is zero, saves it via Pillow as lossless WEBP with exact=True, reloads it, and asserts the underlying RGB channels of the transparent pixel are preserved exactly (libwebp exact-flag semantics).
Pillow WebP getexif on an image saved without EXIF returns an empty Exif container Original / libwebp / usage-python3-pil-r16-webp-open-getexif-no-tags Passed
Saves a small RGB image as WEBP via Pillow with no EXIF supplied, re-opens the file, and asserts Image.getexif() returns a Pillow Exif object whose length is zero — confirming libwebp's optional EXIF chunk stays absent unless explicitly written.
Pillow WEBP quality=10 yields a smaller file than quality=90 on the same source Original / libwebp / usage-python3-pil-r16-webp-quality-10-vs-90-size-delta Passed
Encodes the same RGB image as WEBP via Pillow at quality=10 and quality=90 and asserts the q=10 file is strictly smaller than q=90, exercising the lossy quality knob's size response through Pillow's libwebp binding.
Pillow WEBP lossless save+open preserves dims and mode and tbinds at RGB Original / libwebp / usage-python3-pil-r17-webp-lossless-roundtrip-dims-mode Passed
Saves an RGB image as WEBP with lossless=True via Pillow, re-opens the file, and asserts dims, mode (RGB) and format (WEBP) round-trip — without asserting exact bytes since lossless encoder output varies across versions.
Pillow WEBP method=6 produces a file no larger than method=0 at fixed quality Original / libwebp / usage-python3-pil-r17-webp-method-six-vs-zero-size-monotonic Passed
Encodes the same RGB image through Pillow as WEBP at quality=75 with method=0 and method=6, and asserts the method=6 output is no larger than method=0, exercising libwebp's method effort knob through Pillow.
Pillow WEBP save accepts minimize_size=True and round-trips dims and mode Original / libwebp / usage-python3-pil-r17-webp-minimize-size-flag-accepted Passed
Saves a small RGB image with Pillow's WEBP minimize_size=True flag, re-opens the file, and asserts the round-trip preserves mode and dimensions while producing a non-empty WebP payload.
Pillow WEBP info has no icc_profile key for an image saved without ICC Original / libwebp / usage-python3-pil-r17-webp-open-info-icc-profile-absent Passed
Saves a small RGB image as WEBP without supplying ICC, re-opens the image, and asserts the Pillow info dict either lacks the 'icc_profile' key or holds an empty/falsy value — exercising libwebp's optional ICC chunk absence path.
Pillow WEBP save_all writes a 3-frame animation reporting n_frames=3 on reopen Original / libwebp / usage-python3-pil-r18-webp-animated-save-n-frames-three Passed
Builds three distinct RGB frames in memory, saves them as an animated WEBP via Pillow with save_all=True and append_images, then reopens the file and asserts img.n_frames == 3 along with WEBP format identification.
Pillow WEBP save with exact=True preserves RGB under fully-transparent pixels Original / libwebp / usage-python3-pil-r18-webp-save-exact-true-preserves-alpha-zero-rgb Passed
Saves an RGBA image whose alpha channel is zero everywhere but with distinctive RGB values, using Pillow's WEBP encoder with exact=True and lossless=True, then asserts the round-tripped pixel keeps the exact RGB triple at transparent regions.
Pillow getbands() on a reopened RGB WEBP returns the R,G,B tuple Original / libwebp / usage-python3-pil-r19-webp-getbands-rgb-three-bands Passed
Saves an RGB image as WEBP via Pillow, reopens it through Image.open, and asserts img.getbands() returns the tuple ('R', 'G', 'B') exactly — pinning the libwebp-driven RGB band exposure.
Pillow tell() reports 0 after seek(0) on an animated WEBP and 2 after seek(2) Original / libwebp / usage-python3-pil-r19-webp-tell-after-seek-zero Passed
Saves a four-frame animated WEBP via Pillow, reopens it, seeks to frame 2 and asserts tell()==2, then seeks back to 0 and asserts tell()==0 — pinning the libwebp animation seek-and-tell semantics.
Pillow opens an RGBA WEBP and reports four bands ('R','G','B','A') Original / libwebp / usage-python3-pil-r20-webp-convert-rgba-getbands-four Passed
Saves an RGBA image to WEBP via Pillow with lossless=True, reopens with Image.open, calls load(), and asserts getbands() returns the four-tuple ('R','G','B','A') — pinning libwebp's alpha-preserving decode through PIL.
Pillow Image.open on a saved WEBP exposes img.format == 'WEBP' Original / libwebp / usage-python3-pil-r20-webp-format-attr-after-open Passed
Saves an RGB image to WEBP via Pillow, reopens with Image.open, calls load(), and asserts img.format is exactly the string 'WEBP' — pinning the libwebp-backed format identifier reported by PIL.
Pillow WebP method 0 vs 6 both decode round-trip Original / libwebp / usage-python3-pil-r9-webp-method-monotonic-size Passed
Saves the same generated RGB image with method=0 and method=6 lossy at quality=80, decodes both, and asserts both reload at the original 64x64 dimensions.
Pillow WebP RGBA split returns four bands Original / libwebp / usage-python3-pil-r9-webp-rgba-channel-split Passed
Saves an RGBA image as lossless WebP, reloads it, and asserts Image.split returns four single-band images each of the original dimensions.
Pillow WebP thumbnail preserves aspect ratio Original / libwebp / usage-python3-pil-r9-webp-thumbnail-aspect Passed
Loads a 200x100 generated RGB image, encodes it as WebP, decodes, calls Image.thumbnail((50,50)) and asserts the thumbnail is 50x25.
python PIL red channel WebP Original / libwebp / usage-python3-pil-red-channel-webp Passed
Pillow resizes WebP Original / libwebp / usage-python3-pil-resize-webp Passed
Pillow rotates WebP 270 degrees Original / libwebp / usage-python3-pil-rotate-270-webp Passed
python PIL rotate expand WebP Original / libwebp / usage-python3-pil-rotate-expand-webp Passed
Pillow rotates WebP Original / libwebp / usage-python3-pil-rotate-webp Passed
Pillow save webp Original / libwebp / usage-python3-pil-save-webp Passed
Pillow screen mirror WebP Original / libwebp / usage-python3-pil-screen-mirror-webp Passed
Uses Pillow ImageChops.screen on a generated WebP and its mirrored copy and verifies the screened pixel values before round-tripping.
python PIL solarize WebP Original / libwebp / usage-python3-pil-solarize-webp Passed
python PIL split merge WebP Original / libwebp / usage-python3-pil-split-merge-webp Passed
python PIL stat mean WebP Original / libwebp / usage-python3-pil-stat-mean-webp Passed
Pillow subtract mirror WebP Original / libwebp / usage-python3-pil-subtract-mirror-webp Passed
Uses Pillow ImageChops.subtract on mirrored and original generated WebPs and verifies the non-negative channel differences before round-tripping.
Pillow thumbnails WebP Original / libwebp / usage-python3-pil-thumbnail-webp Passed
python PIL transpose WebP Original / libwebp / usage-python3-pil-transpose-webp Passed
Pillow transverse generated WebP Original / libwebp / usage-python3-pil-transverse-generated-webp Passed
Applies Pillow transverse transpose to a generated WebP and verifies both the swapped dimensions and mapped corner pixels before round-tripping.
Pillow WebP save alpha_quality kwarg Original / libwebp / usage-python3-pil-webp-alpha-quality Passed
Saves an RGBA image to WebP via Pillow with quality=80 and alpha_quality=40, then reopens the file and asserts it remains an RGBA WebP at the source dimensions with the alpha channel preserved.
Pillow WebP alpha channel Original / libwebp / usage-python3-pil-webp-alpha Passed
Pillow WebP animated frame count Original / libwebp / usage-python3-pil-webp-animated-frame-count-batch11 Passed
Pillow animated WebP frame size verification Original / libwebp / usage-python3-pil-webp-animated-frame-sizes Passed
Encodes a four-frame animated WebP from Pillow and asserts that each decoded frame matches the canvas size and reports the expected solid color at the center pixel.
Pillow WebP animated seek second Original / libwebp / usage-python3-pil-webp-animated-seek-second-batch11 Passed
Pillow WebP animation frame count roundtrip Original / libwebp / usage-python3-pil-webp-animation-duration-roundtrip Passed
Saves an animated WebP with explicit per-frame durations through Pillow, then reopens the file and verifies the format identifier, the is_animated flag, and the n_frames count match what was saved, and that each frame's pixel content roundtrips to the colour written into it.
Pillow WebP save_all with append_images list Original / libwebp / usage-python3-pil-webp-append-images Passed
Builds a four-frame animated WebP via Pillow with save_all and an explicit append_images list of three sibling frames, then reopens and asserts is_animated, n_frames==4, and that seek to each frame returns the expected solid color.
Pillow WebP BytesIO open Original / libwebp / usage-python3-pil-webp-bytesio-open-batch11 Passed
Pillow WebP contain size Original / libwebp / usage-python3-pil-webp-contain-size-batch11 Passed
Pillow WebP crop save and reload Original / libwebp / usage-python3-pil-webp-crop-save-reload Passed
Opens a WebP fixture with Pillow, crops a sub-rectangle, saves the crop as a new WebP, and reloads the saved file to verify the crop dimensions and a sample pixel survive the save/reload roundtrip.
Pillow WebP animated disposal/blend Original / libwebp / usage-python3-pil-webp-disposal-blend Passed
Saves an animated WebP through Pillow with explicit disposal=2 and blend=0 per frame, then walks each frame back via seek and confirms pixel sampling.
Pillow WebP exact lossless RGBA roundtrip Original / libwebp / usage-python3-pil-webp-exact-lossless-rgba Passed
Saves an RGBA Pillow image to WebP with exact=True and lossless=True, then verifies pixel-exact roundtrip.
Pillow WebP exact=True preserves transparent RGB Original / libwebp / usage-python3-pil-webp-exact-transparent Passed
Saves an RGBA image with fully-transparent pixels carrying distinct RGB values to a lossless WebP using Pillow with exact=True, then reopens and asserts the transparent pixel's RGB values are preserved byte-for-byte.
Pillow WebP EXIF roundtrip Original / libwebp / usage-python3-pil-webp-exif-empty-roundtrip-batch11 Passed
Pillow WebP feature check Original / libwebp / usage-python3-pil-webp-feature-check-batch11 Passed
Pillow WebP getbbox Original / libwebp / usage-python3-pil-webp-getbbox Passed
Opens a WebP fixture with Pillow and verifies getbbox returns a bounding box that fits within the source image dimensions.
Pillow WebP grayscale mode Original / libwebp / usage-python3-pil-webp-grayscale-mode Passed
Converts a WebP fixture through Pillow grayscale L mode, saves as WebP, and verifies the reopened pixel has equal R, G, and B channels.
Pillow WebP histogram length Original / libwebp / usage-python3-pil-webp-histogram-length Passed
Opens a WebP fixture with Pillow and verifies the RGB histogram has 768 bins summing to width times height times three.
Pillow WebP save with explicit icc_profile bytes Original / libwebp / usage-python3-pil-webp-icc-profile-bytes Passed
Saves a WebP through Pillow embedding a synthetic icc_profile byte string, then reopens the file and verifies the format and that info['icc_profile'] roundtrips byte-for-byte.
Pillow lossless RGBA WebP per-pixel exact roundtrip Original / libwebp / usage-python3-pil-webp-lossless-alpha-pixel-exact Passed
Saves a synthesized RGBA image with varying alpha values per pixel to lossless WebP via Pillow, reloads it, and asserts every pixel including its alpha channel matches the original byte-for-byte.
Pillow WebP lossless save with method=0 (fast) Original / libwebp / usage-python3-pil-webp-lossless-method-zero Passed
Saves an RGB image as lossless WebP through Pillow with method=0 (fastest) and verifies the file decodes back as a WEBP image with the original dimensions and pixel.
Pillow WebP lossless RGB mode Original / libwebp / usage-python3-pil-webp-lossless-rgb-mode-batch11 Passed
Pillow WebP lossless RGBA mode preserved on reopen Original / libwebp / usage-python3-pil-webp-lossless-rgba-mode-preserved Passed
Saves an RGBA image as lossless WebP via Pillow and verifies the reopened image has mode RGBA with intact alpha channel extrema.
Pillow WebP save method=5 Original / libwebp / usage-python3-pil-webp-method-five Passed
Saves an RGB image to WebP with quality=80 and method=5 via Pillow and confirms the output reloads as a WebP at the source dimensions with format=='WEBP'.
Pillow WebP method one save Original / libwebp / usage-python3-pil-webp-method-one-save Passed
Saves a synthetic RGB image to WebP through Pillow with encoder method=1 (fast path) and verifies the file is a valid WebP that reopens with the expected mode and size.
Pillow WebP method six save Original / libwebp / usage-python3-pil-webp-method-six-save-batch11 Passed
Pillow WebP save method=3 Original / libwebp / usage-python3-pil-webp-method-three Passed
Saves an RGB Pillow image to lossy WebP with method=3 and verifies the output reopens as WEBP at the source dimensions.
Pillow WebP method=0 fast vs method=6 best Original / libwebp / usage-python3-pil-webp-method-zero-vs-six Passed
Saves the same RGB image with Pillow at WebP method=0 and method=6, verifying both reload as WEBP with matching dimensions.
Pillow WebP n_frames vs is_animated discrimination Original / libwebp / usage-python3-pil-webp-n-frames-vs-is-animated Passed
Saves a still and an animated WebP through Pillow and verifies that Image.open reports is_animated=False with n_frames==1 for the still file and is_animated=True with n_frames>1 for the animated file.
Pillow WebP near_lossless=60 Original / libwebp / usage-python3-pil-webp-near-lossless-sixty Passed
Saves an RGB Pillow image with lossless=True and a moderate quality used as the near-lossless preprocessing level, then reopens it and confirms the WebP roundtrip preserves the canvas dimensions.
Pillow opens WebP, crops with Image.crop, saves+reloads, checks corner pixels Original / libwebp / usage-python3-pil-webp-open-crop-reload-pixel Passed
Opens a WebP fixture with Pillow, crops a 5x4 sub-rectangle via Image.crop, saves the crop as lossless WebP, reloads it, and asserts both the size and the four corner pixel RGB values match the corresponding pixels in the source crop.
Pillow WebP palette convert Original / libwebp / usage-python3-pil-webp-palette-convert-batch11 Passed
Pillow WebP paste corner Original / libwebp / usage-python3-pil-webp-paste-corner Passed
Pastes a WebP fixture into the right half of a black canvas with Pillow and verifies the unpasted left corner stays black after a WebP round trip.
Pillow WebP quality progression monotonic Original / libwebp / usage-python3-pil-webp-quality-progression Passed
Saves the same RGB image at Pillow WebP quality 20, 50, 90 and asserts file sizes are strictly monotonic increasing.
Pillow WebP quality save Original / libwebp / usage-python3-pil-webp-quality-save Passed
Pillow WebP RGBA alpha extrema Original / libwebp / usage-python3-pil-webp-rgba-alpha-extrema-batch11 Passed
Pillow WebP save_all three frames Original / libwebp / usage-python3-pil-webp-save-all-three-frames Passed
Pillow WebP seek to last frame Original / libwebp / usage-python3-pil-webp-seek-last-frame Passed
Saves a four-frame animated WebP through Pillow then opens it and seeks directly to n_frames-1, verifying tell() and the pixel value at the last frame.
Pillow WebP save sharpness=4 Original / libwebp / usage-python3-pil-webp-sharpness-four Passed
Saves a still PNG to lossy WebP through Pillow with the WebP encoder sharpness=4 option, then verifies the round-tripped image opens with the source dimensions.
Pillow WebP split bands Original / libwebp / usage-python3-pil-webp-split-bands Passed
Splits a WebP fixture into RGB bands with Pillow and verifies three single-channel L-mode bands matching the source size.
Pillow WebP thumbnail then save Original / libwebp / usage-python3-pil-webp-thumbnail-then-save Passed
Opens a WebP fixture with Pillow, calls Image.thumbnail to shrink in place, saves the result as a new WebP, and reloads it to verify it is valid WEBP with shrunk dimensions.
Pillow WebP tobytes length Original / libwebp / usage-python3-pil-webp-tobytes-length Passed
Opens a WebP fixture with Pillow, converts to RGB, and verifies tobytes returns width times height times three bytes.
Pillow WebP Image.transpose FLIP_TOP_BOTTOM roundtrip Original / libwebp / usage-python3-pil-webp-transpose-flip-top-bottom-roundtrip Passed
Opens a WebP fixture with Pillow, applies Image.transpose(FLIP_TOP_BOTTOM), saves the result as lossless WebP, reloads it, and asserts the dimensions are unchanged and that pixel (0,0) of the flipped image equals pixel (0, h-1) of the source.
vips embeds WebP Original / libwebp / usage-vips-embed-webp Passed
vips vertical flip WebP Original / libwebp / usage-vips-flip-vertical-webp Passed
vips webpload n=-1 stacks all animation frames vertically Original / libwebp / usage-vips-r10-webpload-n-equals-all-frames Passed
Builds a 4-frame animated WebP via Pillow then loads it through vips webpload with n=-1, asserting the resulting strip height equals base_height * 4.
vips webpsave with mixed=true on animation produces a valid WebP Original / libwebp / usage-vips-r10-webpsave-mixed-flag Passed
Encodes a 3-frame WebP via Pillow, reloads via vips webpload --n -1, then re-encodes through vips webpsave --mixed and asserts the output reloads at the original base dimensions.
vips webpload --page 0 selects the first frame of an animated WebP Original / libwebp / usage-vips-r11-webpload-page-zero-explicit Passed
Builds a 4-frame animated WebP via Pillow then loads it through vips webpload with an explicit --page 0, asserting the output PNG matches the base frame geometry exactly (no vertical strip stacking).
vips webpsave --near-lossless emits a structurally valid WebP Original / libwebp / usage-vips-r11-webpsave-near-lossless-flag Passed
Encodes an RGB image through vips webpsave with --near-lossless and a low Q, then verifies the output is a valid WebP that decodes back to the original geometry.
vips webpload --shrink 2 halves WebP output dimensions Original / libwebp / usage-vips-r12-webpload-shrink-by-two Passed
Builds a 64x48 RGB WebP via Pillow and loads it through vips webpload --shrink 2, asserting the loaded image is exactly 32x24, exercising the integer-shrink decode path.
vips webpsave --Q 10 yields a smaller file than --Q 95 Original / libwebp / usage-vips-r12-webpsave-q-low-vs-high-size Passed
Encodes a synthetic RGB image through vips webpsave at --Q 10 and --Q 95 and asserts the low-Q file is strictly smaller and both files are recognised as WebP, exercising the lossy quality scale.
vips webpsave --smart-subsample produces a valid WebP at the original size Original / libwebp / usage-vips-r12-webpsave-smart-subsample-flag-roundtrip Passed
Encodes a synthetic RGB image through vips webpsave with --smart-subsample and a fixed Q, then verifies the output is a structurally valid WebP that decodes back to the original geometry via vipsheader.
vips copy ... .webp[Q=70] writes a WebP file with positive byte length Original / libwebp / usage-vips-r13-webpsave-buffer-size-positive Passed
Encodes a synthetic PPM through vips copy with a webp[] options suffix and verifies the output starts with the RIFF/WEBP magic and exceeds 24 bytes, exercising the parameterised webp output path used as a buffer-encode equivalent.
vips webpsave --preset drawing produces a valid WebP at original geometry Original / libwebp / usage-vips-r13-webpsave-preset-drawing-roundtrip Passed
Encodes a synthetic RGB image through vips webpsave --preset drawing at a fixed Q and verifies the output is recognised as WebP and reloads at the input dimensions, exercising the preset selector path.
vips webpsave --preset photo produces a valid WebP at original geometry Original / libwebp / usage-vips-r13-webpsave-preset-photo-roundtrip Passed
Encodes a synthetic RGB image through vips webpsave --preset photo at a fixed Q and verifies the output is recognised as WebP and reloads at the input dimensions via vipsheader, exercising the photo preset's encoder configuration.
vips webpload of an RGB-source WebP reports bands=3 Original / libwebp / usage-vips-r14-webpload-buffer-bands-three-rgb Passed
Encodes an RGB PNG to WebP via Pillow, runs it through vips webpload to a .v file, and asserts vipsheader reports bands=3 (RGB) and matching dimensions, exercising the WebP RGB decode path through vips.
vips webpsave --alpha-q 50 emits a structurally valid RGBA WebP at original geometry Original / libwebp / usage-vips-r14-webpsave-alpha-q-roundtrip Passed
Encodes an RGBA PNG through vips webpsave with --alpha-q 50 and confirms the output is recognised as WebP and reloads with bands=4 (RGBA) and the original geometry, exercising the dedicated alpha-channel quality knob.
vips webpload --shrink 4 quarters both WebP dimensions Original / libwebp / usage-vips-r15-webpload-shrink-four-quarters-dimensions Passed
Saves a 64x48 RGB WebP via Pillow and runs it through vips webpload --shrink 4, then asserts vipsheader reports width=16 and height=12 (each axis quartered), exercising the libwebp DCT-domain integer subsample-on-load path.
vips webpsave --preset text emits a structurally valid WebP at original geometry Original / libwebp / usage-vips-r15-webpsave-preset-text-roundtrip Passed
Encodes a PPM through vips webpsave with --preset text and confirms the output is recognised as WebP and reloads with the original width and height, exercising the libwebp text-content tuning preset through vips.
vips webpsave --Q 0 yields a file no larger than --Q 100 on the same source Original / libwebp / usage-vips-r15-webpsave-q-zero-vs-q-hundred-monotonic-size Passed
Encodes the same PPM through vips webpsave at --Q 0 and --Q 100 and asserts the Q=0 output is no larger than Q=100, exercising the lossy quality-driven byte-size monotonicity through vips at the extreme endpoints.
vips webpload after webpsave preserves source PPM dimensions through a PNG round-trip Original / libwebp / usage-vips-r16-webp-roundtrip-png-dimensions-preserved Passed
Encodes a PPM to WEBP via vips webpsave, loads the WEBP back via vips webpload and writes it out as PNG, then asserts both intermediates report the original 80x60 dimensions through vipsheader's width/height fields.
vips webpsave effort=6 produces a file no larger than effort=0 at fixed --Q Original / libwebp / usage-vips-r16-webpsave-effort-zero-vs-six-monotonic Passed
Encodes the same PPM through vips webpsave at --Q 70 with effort=0 (fastest) and effort=6 (best), and asserts the effort=6 file size is no larger than the effort=0 file, exercising libwebp's method/effort knob's monotonic size effect via vips.
vips webpsave --Q 50 yields a strictly smaller file than --Q 90 on the same PPM source Original / libwebp / usage-vips-r16-webpsave-q-50-vs-q-90-size-delta Passed
Encodes the same generated PPM through vips webpsave at --Q 50 and --Q 90 and asserts the Q=50 output is strictly smaller than Q=90, exercising the lossy quality knob's size response on a mid-vs-high pair.
vips webpsave --alpha-q 50 produces a valid WEBP file from an RGBA PNG Original / libwebp / usage-vips-r17-webpsave-alpha-q-50-valid-output Passed
Builds a tiny RGBA PNG via Pillow, encodes it to WEBP through vips webpsave with --alpha-q 50, and asserts the result is detected as WEBP by file(1) and that vipsheader reports dims matching the input PNG.
vips webpsave --preset picture flag is accepted and produces a valid WEBP file Original / libwebp / usage-vips-r17-webpsave-preset-picture-flag-accepted Passed
Encodes a PPM via vips webpsave with the --preset picture flag, asserts the resulting file is identified as WEBP by file(1), and confirms dims round-trip via vipsheader.
vips webpsave with effort=4 produces a valid WEBP file Original / libwebp / usage-vips-r18-webpsave-effort-4-flag-accepted Passed
Encodes a PPM via vips webpsave with --effort=4, asserts the output is identified as WEBP by file(1), and asserts vipsheader reports the original PPM dimensions on read-back of the encoded WEBP.
vips webpsave --strip emits a valid WEBP file with matching dims Original / libwebp / usage-vips-r18-webpsave-strip-flag-accepted Passed
Encodes a PPM with vips webpsave --strip to drop ancillary metadata, asserts the output is identified as WEBP by file(1), and verifies vipsheader reports the source dimensions.
vips webpsave then webpload preserves total pixel count (width*height) for a still Original / libwebp / usage-vips-r19-webp-roundtrip-preserves-pixel-count Passed
Encodes a 40x30 PPM to WEBP via vips webpsave, then reads it back via vips webpload to a new PNG, and asserts vipsheader reports the PNG has 40*30=1200 pixels via width*height, locking in lossy-roundtrip dimension preservation.
vips webpsave --Q 100 produces a non-empty WEBP that vipsheader reports as RGB Original / libwebp / usage-vips-r19-webpsave-q-100-non-empty-output Passed
Encodes a PPM through vips webpsave at maximum quality --Q 100, asserts the output is identified as WEBP by file(1), is non-empty, and that vipsheader reports bands=3 confirming the libwebp encoder produced a regular RGB stream.
vips webpsave with --lossless writes a WEBP whose vipsheader width/height match the source Original / libwebp / usage-vips-r20-webpsave-lossless-flag-reports-vipsheader-dims Passed
Encodes a 50x40 PPM to WEBP via vips webpsave --lossless and asserts vipsheader -f width and -f height on the resulting WEBP report 50 and 40 respectively, pinning libwebp's lossless-mode dimension preservation through vips.
vips webpsave at Q=30 produces a smaller file than at Q=90 for the same source Original / libwebp / usage-vips-r20-webpsave-quality-30-vs-90-size-monotonic Passed
Saves the same 64x48 PPM to WEBP twice via vips webpsave at quality 30 and 90, and asserts the file size at Q=30 is strictly less than the file size at Q=90, pinning libwebp's quality->size monotonic behavior through vips.
vips webpload followed by jpegsave preserves width and height across the roundtrip Original / libwebp / usage-vips-r21-webpload-then-jpegsave-dimensions-preserved Passed
Encodes a PNG to WEBP via vips webpsave, then loads it with webpload and writes a JPEG, asserting the final JPEG reports the same width and height as the source — pinning libwebp decode dimensions through the vips pipeline on Ubuntu 24.04.
vips webpsave effort=6 produces an output no larger than effort=0 at fixed Q Original / libwebp / usage-vips-r21-webpsave-effort-zero-vs-six-monotonic-size Passed
Encodes the same noisy RGB source to WEBP via vips webpsave at effort=0 and effort=6 with Q=80, asserting effort=6 output size is less than or equal to effort=0 — pinning libwebp's encoder-effort tradeoff through vips on Ubuntu 24.04.
vips webpsave_buffer at Q=50 yields a shorter buffer than Q=95 for identical source Original / libwebp / usage-vips-r21-webpsave-q-50-vs-q-95-buffer-length-monotonic Passed
Loads a JPEG via vips, encodes it to an in-memory WEBP buffer at Q=50 and Q=95 using webpsave_buffer, and asserts the Q=50 buffer length is strictly smaller than Q=95 — pinning vips' Q parameter propagation through libwebp's encoder on Ubuntu 24.04.
vips webpload shrink halves dimensions Original / libwebp / usage-vips-r9-webp-shrink-on-load Passed
Encodes a 64x64 WebP and reloads it via vips webpload with --shrink 2, asserting the loaded image is 32x32.
vips webpsave effort 6 produces smaller-or-equal output than effort 0 Original / libwebp / usage-vips-r9-webpsave-effort-six Passed
Encodes the same source PNG via vips webpsave with effort=0 and effort=6 (both lossy Q=75), and verifies both files are valid WebP.
vips rotates WebP 180 degrees Original / libwebp / usage-vips-rot180-webp Passed
Rotates a WebP image by 180 degrees with vips and verifies the output dimensions remain unchanged.
vips webpsave_buffer / webpload_buffer roundtrip Original / libwebp / usage-vips-webp-buffer-roundtrip Passed
Drives vips webpsave_buffer then webpload_buffer through python-pyvips-style stdin/stdout descriptor pipes and verifies the round-tripped pixel and dimensions.
vips crops WebP Original / libwebp / usage-vips-webp-crop Passed
vips WebP embed canvas Original / libwebp / usage-vips-webp-embed-canvas Passed
Embeds a WebP fixture into an 8x6 canvas with vips embed and verifies vipsheader reports the enlarged canvas dimensions.
vips WebP extract_area header Original / libwebp / usage-vips-webp-extract-area-header Passed
Extracts a 3x2 area from a WebP fixture with vips and verifies vipsheader reports the cropped dimensions on the resulting PNG.
vips flips WebP Original / libwebp / usage-vips-webp-flip Passed
vips webp header Original / libwebp / usage-vips-webp-header Passed
vips WebP to JPEG Original / libwebp / usage-vips-webp-jpeg-copy Passed
vips WebP to PNG Original / libwebp / usage-vips-webp-png-copy Passed
vips webp resize Original / libwebp / usage-vips-webp-resize Passed
vips rotates WebP Original / libwebp / usage-vips-webp-rotate Passed
vips webpload n=-1 reads all animation frames Original / libwebp / usage-vips-webpload-all-frames Passed
Builds a three-frame animated WebP with img2webp, then loads it through vips with [n=-1] (read every frame stacked vertically) and confirms the resulting page-stack height equals 3 * frame_height while page-height reports the per-frame height.
vips webpload then write to PNG Original / libwebp / usage-vips-webpload-write-png Passed
Loads a WebP fixture through vips and writes it out as PNG, verifying the PNG file magic, dimensions reported by vipsheader, and that getpoint can read pixels back from the converted file.
vips webpsave alpha_q Original / libwebp / usage-vips-webpsave-alpha-q Passed
Saves an RGBA PNG to WebP through vips with an explicit alpha_q value and verifies bands and loader.
vips webpsave writes WebP buffer to /dev/stdout Original / libwebp / usage-vips-webpsave-buffer-stdout Passed
Loads a generated PNG through vips and writes the WebP encoding directly to /dev/stdout via the explicit on-disk path; captures the bytes to a file, asserts the file magic is WebP, and confirms vipsheader can re-read the captured WebP and reports the original width and height.
vips webpsave lossless=true Original / libwebp / usage-vips-webpsave-lossless Passed
Re-encodes an RGB WebP through vips webpsave with lossless=true and verifies the output decodes via webpload at preserved dimensions with three bands and that getpoint reproduces a known input pixel exactly.
vips webpsave min_size=false Original / libwebp / usage-vips-webpsave-min-size-false Passed
Saves a still image as WebP through vips with min_size=false explicitly disabled and verifies the result decodes back as WebP via vipsheader and vips getpoint.
vips webpsave min_size Original / libwebp / usage-vips-webpsave-min-size Passed
Saves a still image as WebP through vips with min_size=true and verifies the output is a WebP whose dimensions and loader survive vipsheader.
vips webpsave near_lossless Original / libwebp / usage-vips-webpsave-near-lossless Passed
vips webpsave preset=icon Original / libwebp / usage-vips-webpsave-preset-icon Passed
Re-encodes a small WebP via vips webpsave with preset=icon at quality 90 and confirms the output remains a 4x3 webpload-readable WebP.
vips webpsave preset=text Original / libwebp / usage-vips-webpsave-preset-text Passed
Re-encodes a WebP via vips webpsave with preset=text and verifies the output is loaded through webpload at the original dimensions.
vips webpsave maximum Q=100 Original / libwebp / usage-vips-webpsave-q-100-maximum Passed
Re-encodes a WebP through vips webpsave with Q=100 (maximum quality) and verifies the output is a WebP with preserved dimensions and a decodable sample pixel.
vips webpsave reduction_effort=6 (slow) Original / libwebp / usage-vips-webpsave-reduction-effort-six Passed
Re-encodes a small WebP through vips webpsave with the slowest reduction_effort=6 setting and verifies the output WebP header, dimensions, and that vips can reload the file.
vips webpsave reduction_effort=0 Original / libwebp / usage-vips-webpsave-reduction-effort-zero Passed
Saves a still image through vips webpsave with the lossless reduction_effort=0 fast preset and verifies the output is a WebP whose dimensions and a sampled pixel survive the round-trip.
vips webpsave smart_subsample Original / libwebp / usage-vips-webpsave-smart-subsample Passed
Saves a PNG to WebP through vips with smart_subsample=true and verifies the output dimensions via vipsheader.
gdk-pixbuf-csource on a complex WebP Original / libwebp / usage-webp-pixbuf-loader-csource-complex Passed
Encodes a larger varied-pattern WebP through cwebp and runs gdk-pixbuf-csource on it to confirm the WebP pixbuf loader decodes a non-trivial image and gdk-pixbuf-csource emits the GdkPixdata header with the expected width, height, and named array.
gdk-pixbuf-csource on WebP Original / libwebp / usage-webp-pixbuf-loader-csource Passed
Generates a C source pixel data array from a WebP fixture via gdk-pixbuf-csource using the WebP pixbuf loader.
gdk-pixbuf WebP info Original / libwebp / usage-webp-pixbuf-loader-info Passed
gdk-pixbuf-thumbnailer WebP preserves square dims Original / libwebp / usage-webp-pixbuf-loader-pixbuf-from-file Passed
Builds a 24x24 WebP fixture and asks gdk-pixbuf-thumbnailer for an 8-pixel thumbnail through the WebP pixbuf loader, verifying the output PNG exists, decodes via Pillow as a square 8x8 image, and that the thumbnailer fed pixels through the loader.
webp-pixbuf-loader pixbuf thumbnail Original / libwebp / usage-webp-pixbuf-loader-pixbuf-thumbnail Passed
gdk-pixbuf WebP pixdata --rle binary header Original / libwebp / usage-webp-pixbuf-loader-pixdata-name Passed
Loads a WebP fixture via gdk-pixbuf-pixdata with --rle (RLE compression on) and verifies the produced pixdata blob exists, is non-empty, and starts with the GdkPixdata magic ("GdkP", 0x47646b50) confirming the WebP pixbuf loader fed real pixels through the pixdata serializer.
gdk-pixbuf-query-loaders includes WebP Original / libwebp / usage-webp-pixbuf-loader-query-loaders-includes-webp Passed
Runs gdk-pixbuf-query-loaders and verifies the WebP pixbuf loader is registered, decoding the loader cache for the WebP MIME type and image/webp entry.
webp-pixbuf-loader registers a loadable .so at the expected GdkPixbuf loaders path Original / libwebp / usage-webp-pixbuf-loader-r10-thumbnailer-shows-image-webp Passed
Verifies that the webp-pixbuf-loader package installs a loadable .so (libpixbufloader-webp.so) under /usr/lib/<triplet>/gdk-pixbuf-2.0/2.10.0/loaders and that the resulting loader cache (generated with gdk-pixbuf-query-loaders at its install-tree path) advertises the WebP extension. Covers the filesystem-level registration that the cache enumeration test does not.
webp-pixbuf-loader registers the image/webp MIME type in loaders.cache Original / libwebp / usage-webp-pixbuf-loader-r11-loader-cache-mime-image-webp Passed
Reads the system gdk-pixbuf loaders.cache and asserts a libpixbufloader-webp.so block is present and that the same record advertises the image/webp MIME type and the .webp extension token.
gdk-pixbuf-pixdata decodes a palette-encoded WebP via the webp loader Original / libwebp / usage-webp-pixbuf-loader-r11-pixdata-palette-webp-roundtrip Passed
Saves a P-mode (palette) lossless WebP via Pillow then runs gdk-pixbuf-pixdata to convert it to a GdkPixdata blob, asserting the loader emits a non-empty stream beginning with the 'GdkP' magic.
gdk-pixbuf-pixdata decodes an RGBA lossless WebP via the webp loader Original / libwebp / usage-webp-pixbuf-loader-r12-pixdata-rgba-webp-magic-header Passed
Saves an RGBA lossless WebP via Pillow then runs gdk-pixbuf-pixdata to convert it to a GdkPixdata blob, asserting the loader emits a non-empty stream beginning with the four-byte 'GdkP' magic.
gdk-pixbuf-pixdata decodes a grayscale-derived RGB WebP via the webp loader Original / libwebp / usage-webp-pixbuf-loader-r13-pixdata-grayscale-webp-magic Passed
Builds an L-mode (grayscale) Pillow image, converts to RGB, saves as WebP, then runs gdk-pixbuf-pixdata over it and asserts the resulting GdkPixdata blob starts with the four-byte 'GdkP' magic, confirming the loader handled the WebP via the webp-pixbuf-loader plugin.
gdk-pixbuf-pixdata on an RGB WebP emits a 'GdkP' blob larger than its input Original / libwebp / usage-webp-pixbuf-loader-r14-pixdata-rgb-magic-and-size Passed
Saves a small RGB WebP via Pillow, runs gdk-pixbuf-pixdata over it, and asserts the resulting GdkPixdata blob starts with the four-byte 'GdkP' magic and is at least the size of an uncompressed pixmap raster (width*height*3 bytes), confirming the WebP loader produced a fully-decoded pixbuf payload.
gdk-pixbuf-query-loaders cache lists the .webp extension and 'webp' format name Original / libwebp / usage-webp-pixbuf-loader-r14-query-loaders-extension-webp Passed
Runs gdk-pixbuf-query-loaders and asserts the resulting loader cache contains both the bare 'webp' format token (loader name) and the explicit '.webp' or '"webp"' extension entry, confirming the loader is fully registered with gdk-pixbuf.
gdk-pixbuf-query-loaders cache lists the image/webp MIME type alongside the webp loader name Original / libwebp / usage-webp-pixbuf-loader-r15-loaders-cache-mime-image-webp Passed
Runs gdk-pixbuf-query-loaders, captures the resulting cache, and asserts both the literal image/webp MIME line and the bare 'webp' format token appear in it, confirming the WebP loader registers its MIME mapping with gdk-pixbuf.
gdk-pixbuf-query-loaders cache pairs the webp extension with the image/webp MIME entry Original / libwebp / usage-webp-pixbuf-loader-r16-query-loaders-extension-and-mime Passed
Runs gdk-pixbuf-query-loaders, captures the cache, and asserts the output simultaneously contains the bare 'webp' format token, the 'image/webp' MIME line, and a quoted '.webp' extension/glob entry — locking in extension + MIME registration of the WebP gdk-pixbuf loader.
gdk-pixbuf-query-loaders advertises the webp format with its descriptive name Original / libwebp / usage-webp-pixbuf-loader-r17-query-loaders-webp-format-name Passed
Runs gdk-pixbuf-query-loaders, captures the cache, and asserts the listing contains the "WebP image" human-readable name field along with the bare 'webp' format token — exercising the pixbuf module manifest contributed by webp-pixbuf-loader.
gdk-pixbuf-pixdata reads a Pillow-saved WEBP and emits a non-empty GdkPixdata stream Original / libwebp / usage-webp-pixbuf-loader-r18-pixdata-prints-image-magic Passed
Saves a small WEBP via Pillow, runs gdk-pixbuf-pixdata to convert it to a pixdata C source stream, asserts the output starts with the GDK_PIXBUF_C_SOURCE / GdkPixdata C identifiers, confirming the webp-pixbuf-loader module loaded a WEBP successfully.
gdk-pixbuf-query-loaders lists image/webp as a registered MIME type Original / libwebp / usage-webp-pixbuf-loader-r18-query-loaders-image-webp-mime Passed
Invokes gdk-pixbuf-query-loaders and asserts the resulting loader manifest contains the image/webp MIME entry contributed by webp-pixbuf-loader, evidencing libwebp-backed loader registration.
gdk-pixbuf-query-loaders advertises the .webp file extension under webp-pixbuf-loader Original / libwebp / usage-webp-pixbuf-loader-r19-query-loaders-webp-extension-listed Passed
Runs gdk-pixbuf-query-loaders and asserts the produced loader cache mentions the bare 'webp' token paired with the image/webp MIME, confirming the webp-pixbuf-loader registers its extension and MIME together.
gdk-pixbuf-query-loaders cache lists at least two LoaderDir paths around the webp loader Original / libwebp / usage-webp-pixbuf-loader-r20-query-loaders-cache-multiple-loaders Passed
Runs gdk-pixbuf-query-loaders and asserts the produced cache contains an explicit "LoaderDir" comment header and that the webp loader appears together with at least one other distinct .so module path — pinning that the webp-pixbuf-loader coexists with the wider GdkPixbuf loader set on Ubuntu 24.04.
gdk-pixbuf-query-loaders cache references a libpixbufloader-webp module path Original / libwebp / usage-webp-pixbuf-loader-r20-query-loaders-libpixbufloader-webp-path Passed
Runs gdk-pixbuf-query-loaders and asserts the cache lists a module path matching libpixbufloader-webp.so (the shared object that ships in the webp-pixbuf-loader package), pinning the GdkPixbuf loader discovery for libwebp on Ubuntu 24.04.
gdk-pixbuf-pixdata reads a WEBP via the webp-pixbuf-loader and emits a non-empty GdkPixdata struct Original / libwebp / usage-webp-pixbuf-loader-r21-gdk-pixbuf-pixdata-runs-on-webp Passed
Encodes a small RGB WEBP via Pillow and runs gdk-pixbuf-pixdata on it, asserting the binary GdkPixdata output is non-empty — pinning the webp-pixbuf-loader's bridging into gdk-pixbuf-pixdata on Ubuntu 24.04.
gdk-pixbuf-query-loaders output advertises an image/* webp MIME entry Original / libwebp / usage-webp-pixbuf-loader-r21-query-loaders-image-x-webp-mime Passed
Runs gdk-pixbuf-query-loaders, captures the cache, and asserts the cache mentions an image-class MIME entry referencing webp (image/webp or image/x-webp) — pinning webp-pixbuf-loader's GdkPixbuf MIME registration on Ubuntu 24.04.
gdk-pixbuf-pixdata decodes a non-alpha WebP via the loader Original / libwebp / usage-webp-pixbuf-loader-r9-pixbuf-rgb-channels Passed
Encodes a lossy non-alpha WebP via cwebp then runs gdk-pixbuf-pixdata to confirm the GdkPixbuf WebP loader decodes it and emits a non-empty pixdata blob with the GdkP magic.
gdk-pixbuf-pixdata loads an RGBA WebP via the GdkPixbuf WebP loader Original / libwebp / usage-webp-pixbuf-loader-r9-pixbuf-rgba-channels Passed
Encodes an RGBA WebP via Pillow then runs gdk-pixbuf-pixdata to convert it to a GdkPixdata blob, verifying the GdkPixbuf loader for image/webp can decode the file.
CVE-2016-9085 libwebp regression Original / libwebp / cve-2016-9085 Passed
Asserts that cwebp rejects an input whose width and height arithmetic would push width*height*4 past 2^32 instead of producing the wrap-around buffer that triggered the 0.5.2 hardening wave.
CVE-2020-36332 libwebp regression Original / libwebp / cve-2020-36332 Passed
Asserts that dwebp rejects a malformed lossless WebP whose VP8L header declares an unreasonable Huffman group count without entering the historical excessive-allocation path.
cwebp dwebp round trip Port / libwebp / cwebp-dwebp-roundtrip Passed
libwebp C API decode smoke Port / libwebp / decode-c-api-smoke Passed
Malformed WebP rejection Port / libwebp / malformed-webp-rejection Passed
webpinfo inspection Port / libwebp / webpinfo-inspection Passed
webpmux metadata behavior Port / libwebp / webpmux-metadata Passed
ffmpeg APNG to animated WebP Port / libwebp / usage-ffmpeg-apng-to-webp-animation Passed
Builds an animated PNG via Pillow, transcodes it to animated WebP through ffmpeg's libwebp_anim encoder, and verifies the output is WebP with the expected dimensions.
ffmpeg libwebp_anim with explicit framerate Port / libwebp / usage-ffmpeg-libwebp-anim-fps Passed
Encodes three PPM frames to animated WebP via ffmpeg's libwebp_anim with -framerate 4 and verifies the output decodes back through Pillow with three frames at the source size.
ffmpeg WebP encode keeps alpha plane via yuva420p pix_fmt Port / libwebp / usage-ffmpeg-r10-webp-pix-fmt-yuva420p Passed
Encodes an RGBA PNG to WebP with -pix_fmt yuva420p and confirms the resulting WebP decodes back with an alpha channel preserved.
ffmpeg libwebp preset default produces a valid WebP Port / libwebp / usage-ffmpeg-r10-webp-preset-default Passed
Encodes a PNG to WebP via ffmpeg using -preset default and asserts the output is a WebP that decodes at the source dimensions.
ffmpeg libwebp accepts -compression_level 6 and emits a valid WebP Port / libwebp / usage-ffmpeg-r11-libwebp-compression-level-six Passed
Encodes an RGB PNG to WebP with -compression_level 6 (above the libwebp default of 4) and confirms the output is a structurally valid VP8 WebP.
ffmpeg libwebp -quality 100 produces a larger file than the default Port / libwebp / usage-ffmpeg-r11-libwebp-quality-100-larger-than-default Passed
Encodes the same noisy 200x200 RGB PNG twice via libwebp (default quality and -quality 100) and asserts the maximum-quality output is strictly larger, exercising the encoder quality knob.
ffmpeg libwebp -lossless 1 round-trips RGB pixels byte-for-byte Port / libwebp / usage-ffmpeg-r12-webp-lossless-flag-decodes-exactly Passed
Encodes a synthetic RGB PNG with ffmpeg -c:v libwebp -lossless 1 then decodes back to PPM via ffmpeg and asserts the output pixel buffer matches the input byte-for-byte.
ffmpeg libwebp encode -quality 5 produces a smaller file than -quality 95 Port / libwebp / usage-ffmpeg-r12-webp-quality-low-vs-high-size-monotonic Passed
Encodes the same RGB PNG to WebP twice via ffmpeg libwebp at -quality 5 and -quality 95 and confirms the low-quality file is strictly smaller, exercising the lossy quality scale.
ffmpeg libwebp -compression_level 6 yields no larger file than level 0 Port / libwebp / usage-ffmpeg-r13-webp-compression-level-zero-vs-six-size Passed
Encodes the same RGB PNG to lossless WebP with -compression_level 0 and 6 via ffmpeg libwebp and asserts the level-6 output is no larger than the level-0 output, exercising the libwebp method effort knob's monotonic size effect at constant content.
ffmpeg libwebp_anim -loop 0 produces a WEBP that Pillow reads as loop=0 Port / libwebp / usage-ffmpeg-r13-webp-loop-zero-infinite Passed
Encodes a 3-frame APNG to animated WEBP via ffmpeg's libwebp_anim with -loop 0 and asserts Pillow reopens the result with im.info["loop"] == 0 (infinite), exercising the muxer loop-count round-trip.
ffmpeg libwebp -lossless 1 round-trips RGB pixels exactly Port / libwebp / usage-ffmpeg-r14-webp-lossless-flag-vs-lossy-pixel-fidelity Passed
Encodes a synthetic RGB PNG to WebP with ffmpeg -c:v libwebp -lossless 1, decodes back to PNG, and asserts every pixel is byte-identical to the source via a Pillow tobytes() comparison, exercising the lossless encode/decode contract.
ffmpeg libwebp -quality 30 yields a no-larger file than -quality 90 Port / libwebp / usage-ffmpeg-r14-webp-quality-mid-vs-high-monotonic-size Passed
Encodes the same PNG to lossy WebP with ffmpeg libwebp at -quality 30 and -quality 90 (default lossy mode) and asserts the q30 file is no larger than q90, exercising the lossy quality knob's monotonic size effect through ffmpeg.
ffmpeg libwebp -frames:v 2 with a single PNG produces a still WebP that Pillow opens Port / libwebp / usage-ffmpeg-r15-webp-frames-v-2-still-output Passed
Encodes a single PNG to lossy WebP via ffmpeg libwebp with -frames:v 2 (more frames requested than provided) and asserts the output is recognised as WebP, opens cleanly via Pillow, and reports the original 32x24 dimensions, exercising ffmpeg's behaviour when -frames:v exceeds source duration on the still encoder.
ffmpeg libwebp -pix_fmt yuva420p preserves RGBA source through to a WebP that Pillow reads as RGBA Port / libwebp / usage-ffmpeg-r15-webp-pix-fmt-yuva420p-rgba-source Passed
Encodes an RGBA PNG to WebP via ffmpeg -c:v libwebp -pix_fmt yuva420p -frames:v 1 and asserts Pillow re-opens the result with mode == 'RGBA' and the original geometry, exercising the alpha-bearing pix_fmt round-trip through ffmpeg/libwebp.
ffmpeg -c:v libwebp -lossless 1 produces a WebP whose RIFF payload identifies as VP8L Port / libwebp / usage-ffmpeg-r16-libwebp-lossless-flag-produces-vp8l Passed
Encodes a small PNG to WEBP via ffmpeg -c:v libwebp -lossless 1, asserts the result carries the standard RIFF/WEBP header and contains a 'VP8L' four-character chunk identifier in the first 64 bytes — the libwebp lossless container signature.
ffmpeg libwebp_anim -loop 5 produces an animated WebP that Pillow reports with loop=5 Port / libwebp / usage-ffmpeg-r16-webp-libwebp-anim-loop-five Passed
Encodes a small synthetic two-frame PNG stream into an animated WebP via ffmpeg -c:v libwebp_anim -loop 5, re-opens the result with Pillow, and asserts is_animated is True and the info loop value is 5.
ffmpeg -vcodec libwebp -q:v 80 over a PNG input produces a still WEBP file Port / libwebp / usage-ffmpeg-r17-libwebp-quality-80-png-input-produces-webp Passed
Encodes a generated PNG to WEBP via ffmpeg's libwebp encoder at -q:v 80 with -lossless 0, and asserts the resulting file is identified as WEBP by file(1) and is non-empty.
ffmpeg decodes a WEBP into a PNG and ffprobe reports the original dims Port / libwebp / usage-ffmpeg-r18-libwebp-decode-png-rgb24-shape Passed
Encodes a generated PNG to WEBP via libwebp, then decodes the WEBP back to PNG with ffmpeg, and verifies ffprobe reports the original 80x60 dims on the PNG output to confirm the decode path through libwebp.
ffmpeg libwebp -preset text encodes a PNG to WEBP and is detected by file(1) Port / libwebp / usage-ffmpeg-r18-libwebp-preset-text-flag-accepted Passed
Encodes a synthetic PNG via ffmpeg's libwebp encoder with -preset text and -q:v 70, asserts the produced file is identified as WEBP, and that it is non-empty.
ffmpeg libwebp encode with -an results in a WEBP carrying exactly one video stream Port / libwebp / usage-ffmpeg-r19-libwebp-an-strips-audio-only-video Passed
Encodes a PNG to WEBP via ffmpeg with -an explicitly disabling audio, then runs ffprobe to count streams in the output and asserts exactly one video stream and zero audio streams are present.
ffprobe -show_streams reports codec_name=webp on a libwebp-encoded WEBP Port / libwebp / usage-ffmpeg-r19-libwebp-codec-name-webp-in-show-streams Passed
Encodes a PNG to WEBP through ffmpeg's libwebp encoder, then runs ffprobe with -show_streams in default key=value format and asserts the codec_name line equals 'webp', confirming the libwebp-produced file is identified as the webp codec.
ffmpeg libwebp -compression_level 3 encodes a PNG to a non-empty WEBP Port / libwebp / usage-ffmpeg-r19-libwebp-compression-level-three-flag-accepted Passed
Drives ffmpeg's libwebp encoder with -compression_level 3 against a generated PNG input, asserts file(1) identifies the output as WEBP, and that ffprobe reports the original 72x54 dimensions on the encoded file.
ffmpeg libwebp encoder from an rgb24 rawvideo source emits a valid RIFF/WEBP container Port / libwebp / usage-ffmpeg-r20-libwebp-encode-rgb24-source-produces-webp Passed
Pipes a 32x24 rgb24 rawvideo frame into ffmpeg's libwebp encoder and asserts the produced file begins with the RIFF/WEBP signature (RIFF....WEBP), pinning the rawvideo->libwebp encode path on Ubuntu 24.04.
ffprobe -show_frames on a libwebp-encoded still reports a positive pkt_size for the frame Port / libwebp / usage-ffmpeg-r20-libwebp-show-frames-pkt-size-positive Passed
Encodes a PNG to WEBP via ffmpeg's libwebp encoder, then runs ffprobe -show_frames -of csv on the v:0 stream and asserts the captured pkt_size column is an integer greater than zero, confirming the libwebp-produced frame has a non-empty packet payload.
ffmpeg libwebp -preset icon emits a RIFF/WEBP file for a small rgb24 frame Port / libwebp / usage-ffmpeg-r21-libwebp-preset-icon-flag-accepted Passed
Encodes a 16x16 rgb24 rawvideo frame through ffmpeg's libwebp encoder with -preset icon and asserts the output starts with RIFF/WEBP magic, pinning ffmpeg's icon preset routing through libwebp on Ubuntu 24.04.
ffmpeg libwebp accepts -preset photo and produces a RIFF/WEBP file Port / libwebp / usage-ffmpeg-r21-libwebp-preset-photo-flag-accepted Passed
Encodes a tiny rgb24 rawvideo source through ffmpeg's libwebp encoder with -preset photo, asserts the resulting file begins with RIFF....WEBP, pinning libwebp's photo preset propagation through the ffmpeg wrapper on Ubuntu 24.04.
ffmpeg libwebp encoder produces strictly smaller output at q=5 than q=95 from identical rawvideo Port / libwebp / usage-ffmpeg-r21-libwebp-quality-monotonic-q5-q95 Passed
Encodes the same 64x48 rgb24 rawvideo frame twice via ffmpeg's libwebp encoder at -quality 5 and -quality 95, asserting the q=5 output is strictly smaller than the q=95 output — pinning ffmpeg's libwebp -quality knob to libwebp's quality/size curve on Ubuntu 24.04.
ffmpeg encodes WebP from RGBA source Port / libwebp / usage-ffmpeg-r9-webp-pix-fmt-rgba Passed
Generates an RGBA PNG via ffmpeg testsrc-like nullsrc, encodes WebP with -pix_fmt yuva420p, and probes the result has webp codec.
ffmpeg WebP low quality is smaller than high quality Port / libwebp / usage-ffmpeg-r9-webp-quality-five-vs-eighty Passed
Encodes the same source PNG twice with libwebp -q 5 and -q 95 and asserts the higher-quality file is larger than the lower-quality one.
ffmpeg WebP to BMP Port / libwebp / usage-ffmpeg-webp-bmp Passed
ffmpeg WebP encode with explicit -compression_level 6 Port / libwebp / usage-ffmpeg-webp-compression-level-explicit-six Passed
Encodes a synthesized PPM frame to WebP with ffmpeg using -compression_level 6 explicitly along with -qscale:v 75, then verifies the output WebP magic and that ffprobe reports the expected width/height.
ffmpeg WebP compression level encode Port / libwebp / usage-ffmpeg-webp-compression-level Passed
ffmpeg webp decode Port / libwebp / usage-ffmpeg-webp-decode Passed
ffmpeg WebP encode passes -metadata title= without error Port / libwebp / usage-ffmpeg-webp-encode-with-metadata-title Passed
Encodes a PNG to WebP via ffmpeg while passing -metadata title=validator-libwebp; libwebp does not persist generic metadata to a still WebP, so this asserts only that ffmpeg accepts the option, the resulting file is valid WebP with the original dimensions, and ffprobe re-opens it cleanly.
ffmpeg WebP encode with -fpsmax 30 cap Port / libwebp / usage-ffmpeg-webp-fpsmax-cap Passed
Encodes a single PNG frame to WebP with ffmpeg using -fpsmax 30 as a frame-rate ceiling and verifies the output is WebP with the expected dimensions.
ffmpeg WebP encode with -frames:v 1 Port / libwebp / usage-ffmpeg-webp-frames-v-single Passed
Encodes a single-frame WebP from a raw input through ffmpeg with -frames:v 1 and verifies the output via file magic and ffprobe dimensions.
ffmpeg WebP from raw rgb24 stream Port / libwebp / usage-ffmpeg-webp-from-rawvideo-rgb24 Passed
Feeds a raw rgb24 stream through ffmpeg's rawvideo demuxer, encodes it as WebP via libwebp, and verifies the result with file magic and dimensions.
ffmpeg WebP encode with -global_quality Port / libwebp / usage-ffmpeg-webp-global-quality Passed
Encodes a synthetic PNG to WebP with ffmpeg libwebp using the AVCodecContext -global_quality knob (FF_QP2LAMBDA-scaled) and verifies the output is a valid WebP at the expected dimensions.
ffmpeg WebP hint photo encode Port / libwebp / usage-ffmpeg-webp-hint-photo Passed
Encodes a PPM frame to lossy WebP through ffmpeg's libwebp encoder using -preset photo and confirms the output is a valid WebP with the expected dimensions.
ffmpeg converts WebP to JPEG Port / libwebp / usage-ffmpeg-webp-jpeg Passed
Decodes a WebP image through ffmpeg and writes JPEG output, then verifies the resulting JPEG file format.
ffmpeg WebP loop duration Port / libwebp / usage-ffmpeg-webp-loop-duration Passed
Loops a still WebP through ffmpeg with -loop 1 -t to produce a multi-frame MP4 of a known duration and verifies it via ffprobe.
ffmpeg libwebp_anim explicit loop count Port / libwebp / usage-ffmpeg-webp-loop-three Passed
Encodes a multi-frame animated WebP through ffmpeg libwebp_anim with -loop 3 and verifies Pillow reads back the loop count from im.info.
ffmpeg WebP transcoded between lossless and lossy Port / libwebp / usage-ffmpeg-webp-lossless-to-lossy-transcode Passed
Encodes a PPM source to a lossless WebP via ffmpeg, then re-encodes that lossless WebP to a lossy WebP, asserting both outputs are valid WebP with matching dimensions.
ffmpeg WebP MD5 Port / libwebp / usage-ffmpeg-webp-md5 Passed
ffmpeg WebP to MP4 Port / libwebp / usage-ffmpeg-webp-mp4-frames Passed
ffmpeg WebP null output Port / libwebp / usage-ffmpeg-webp-null-output Passed
Decodes WebP input through ffmpeg null output mode and verifies processing statistics are printed.
ffmpeg WebP PGM output Port / libwebp / usage-ffmpeg-webp-pgm-output Passed
Decodes a WebP fixture with ffmpeg using gray pixel format and verifies the resulting PGM file begins with the P5 magic header.
ffmpeg WebP encode with explicit pix_fmt yuv420p Port / libwebp / usage-ffmpeg-webp-pix-fmt-yuv420p Passed
Encodes a PNG to WebP through ffmpeg libwebp forcing -pix_fmt yuv420p and verifies the output is a valid WebP at the expected dimensions and that ffprobe reports yuv420p as the pixel format.
ffmpeg WebP to PNG with -ss seek Port / libwebp / usage-ffmpeg-webp-png-seek-frame Passed
Loops a still WebP under ffmpeg with -loop 1 and -ss to seek into the synthetic timeline, decodes a single frame to PNG, and verifies the PNG output.
ffmpeg WebP to PNG Port / libwebp / usage-ffmpeg-webp-png Passed
ffmpeg WebP preset drawing encode Port / libwebp / usage-ffmpeg-webp-preset-drawing Passed
Encodes a PPM frame to WebP via ffmpeg with -preset drawing and verifies ffprobe reports the webp codec at the original dimensions.
ffmpeg WebP preset picture encode Port / libwebp / usage-ffmpeg-webp-preset-picture Passed
Encodes a PPM frame to WebP via ffmpeg using libwebp -preset picture and verifies the output magic and dimensions.
ffmpeg webp probe Port / libwebp / usage-ffmpeg-webp-probe Passed
ffmpeg WebP quality encode Port / libwebp / usage-ffmpeg-webp-quality-encode Passed
ffmpeg WebP -q:v low vs high size monotonic Port / libwebp / usage-ffmpeg-webp-quality-vs-high Passed
Encodes the same PPM source via ffmpeg libwebp at low and high -q:v values and asserts the higher quality output is strictly larger.
ffmpeg libwebp_anim from RGBA PNG sequence Port / libwebp / usage-ffmpeg-webp-rgba-png-anim Passed
Encodes three RGBA PNG frames with varying alpha into an animated WebP via ffmpeg's libwebp_anim and verifies Pillow reports n_frames>=3 with mode containing alpha after seek.
ffmpeg WebP encode then decode back to PPM Port / libwebp / usage-ffmpeg-webp-roundtrip-to-ppm Passed
Encodes a synthesized PPM frame to WebP with ffmpeg using -lossless 1, then re-decodes the WebP via ffmpeg back to a PPM image and asserts the decoded PPM has the original dimensions and the file magic 'Netpbm image data'.
ffmpeg WebP encode with explicit -vf scale dimensions Port / libwebp / usage-ffmpeg-webp-scale-explicit-dims Passed
Encodes a PPM source to WebP with ffmpeg while forcing a specific output size via -vf scale=W:H, then re-probes the WebP to confirm the encoded dimensions match.
FFmpeg WebP scale filter Port / libwebp / usage-ffmpeg-webp-scale-filter Passed
ffmpeg WebP TIFF output Port / libwebp / usage-ffmpeg-webp-tiff-output Passed
Decodes a WebP fixture with ffmpeg to a TIFF and verifies file reports the result as TIFF image data.
ffprobe -of csv reports webp codec on a WebP stream Port / libwebp / usage-ffprobe-r10-webp-of-csv-streams Passed
Encodes a WebP via ffmpeg then runs ffprobe with -of csv -show_streams and asserts a webp codec name appears in the CSV output.
ffprobe reads WebP dimensions Port / libwebp / usage-ffprobe-webp-dimensions Passed
ffprobe WebP format metadata Port / libwebp / usage-ffprobe-webp-format-name Passed
Runs ffprobe on a WebP fixture and validates the demuxer-reported format name and codec name surface as 'webp'.
ffprobe -show_chapters on still WebP is empty Port / libwebp / usage-ffprobe-webp-show-chapters-empty Passed
A still WebP image has no chapter markers, so ffprobe -show_chapters must succeed and emit no [CHAPTER] sections. This testcase encodes a PNG to WebP with ffmpeg and then verifies the chapter listing is empty while format/stream info is still readable.
ffprobe -show_format on WebP Port / libwebp / usage-ffprobe-webp-show-format Passed
Runs ffprobe with -show_format on a WebP fixture and verifies the [FORMAT] block plus a webp format_name surface in the output.
ffprobe show_packets on WebP Port / libwebp / usage-ffprobe-webp-show-packets Passed
Runs ffprobe -show_packets on a WebP fixture and verifies at least one packet is reported with codec_type=video.
ffprobe -show_streams WebP width/height Port / libwebp / usage-ffprobe-webp-show-streams-dims Passed
Runs ffprobe with -show_streams against a WebP image and asserts the parsed width/height from the full stream dump.
ffprobe -show_streams on WebP exposes a stream block Port / libwebp / usage-ffprobe-webp-show-streams-tags Passed
Encodes a PNG to WebP with ffmpeg, then runs ffprobe -show_streams and confirms the output contains a [STREAM] section, the codec_name=webp tag, and the expected width/height.
SDL2_image loads WebP Port / libwebp / usage-libsdl2-image-load-webp Passed
SDL2_image IMG_LoadTyped_RW with explicit WEBP type Port / libwebp / usage-libsdl2-image-r10-webp-load-typed-rw Passed
Encodes a small WebP and loads it via IMG_LoadTyped_RW("WEBP") rather than IMG_Load to verify the typed-loader path resolves the WebP decoder.
SDL2_image WebP loaded surface pitch equals width * bytes-per-pixel Port / libwebp / usage-libsdl2-image-r10-webp-pitch-equals-width-times-bytes Passed
Loads a 16x16 lossless WebP via SDL2_image, converts to a known RGBA8888 format, and asserts surface->pitch equals width * 4 with no row padding inserted.
SDL2_image IMG_Linked_Version reports the SDL2 major version Port / libwebp / usage-libsdl2-image-r11-img-linked-version-major-two Passed
Compiles a tiny C program that calls IMG_Linked_Version() and asserts the runtime-reported SDL_image major matches the SDL2 ABI (2.x), proving the WebP-aware build is loaded.
SDL2_image IMG_LoadAnimation reports the WebP frame count Port / libwebp / usage-libsdl2-image-r11-img-loadanimation-frame-count Passed
Builds a 3-frame animated WebP via Pillow then loads it through IMG_LoadAnimation, asserting the returned IMG_Animation reports count==3 and matches the source geometry.
SDL2_image IMG_isWEBP returns true for a real WebP RWops Port / libwebp / usage-libsdl2-image-r12-img-iswebp-detects-webp Passed
Saves a small RGB WebP via Pillow, opens it through SDL_RWFromFile, and asserts IMG_isWEBP(rw) returns 1, confirming the SDL2_image probe is wired into the libwebp-aware build.
SDL2_image IMG_Load on a lossless RGB WebP returns a 24/32-bit surface Port / libwebp / usage-libsdl2-image-r13-webp-img-load-rgb-pixel-format Passed
Saves an opaque RGB lossless WebP via Pillow, loads it through IMG_Load, and asserts the surface BitsPerPixel is 24 or 32 (RGB or RGBA), confirming SDL2_image presents the WebP-decoded surface in a normal pixel format.
SDL2_image IMG_Load on a WebP returns a surface with pitch >= width * BytesPerPixel Port / libwebp / usage-libsdl2-image-r14-webp-img-load-pitch-positive Passed
Saves a small RGB WebP via Pillow, loads it via IMG_Load, and asserts the SDL_Surface pitch is >= width*BytesPerPixel (the row-stride lower bound), exercising the surface-stride invariant after a libwebp decode.
SDL2_image IMG_Load on a lossless RGBA WebP returns a 32-bit surface Port / libwebp / usage-libsdl2-image-r14-webp-img-load-rgba-surface-bpp-32 Passed
Saves a lossless RGBA WebP via Pillow, loads it through IMG_Load, and asserts the surface BitsPerPixel is exactly 32 (RGBA), confirming SDL2_image presents the alpha-bearing WebP-decoded surface in a 32-bit pixel format.
SDL2_image IMG_Load_RW from an in-memory WebP buffer returns a non-null surface Port / libwebp / usage-libsdl2-image-r15-webp-img-load-rw-from-memory-buffer Passed
Saves a small RGB WebP via Pillow, loads its bytes into a heap buffer, wraps it with SDL_RWFromMem, and calls IMG_Load_RW(rw, 1, NULL) — asserting the returned SDL_Surface is non-null and reports the original dimensions, exercising the in-memory RWops decode path on a libwebp-decoded image.
SDL2_image IMG_Init(IMG_INIT_WEBP) sets the WEBP flag in its return mask Port / libwebp / usage-libsdl2-image-r17-img-init-webp-bit-set Passed
Compiles a tiny C program that calls IMG_Init(IMG_INIT_WEBP) and asserts the returned bitmask has the WEBP bit set, confirming the SDL2_image build can dynamically activate WebP support backed by libwebp.
SDL2_image IMG_Linked_Version reports a non-null SDL_version with positive major Port / libwebp / usage-libsdl2-image-r18-img-linked-version-positive Passed
Compiles a small C program that calls IMG_Linked_Version() and prints the runtime-linked SDL_image version, then asserts the pointer is non-null and the major component is at least 2 — sanity-checking the SDL2_image library load that backs the libwebp decoder path.
SDL2_image IMG_Load on a Pillow-generated WEBP returns a surface with expected width/height Port / libwebp / usage-libsdl2-image-r18-img-load-webp-surface-w-h Passed
Generates a 48x36 WEBP via Pillow, loads it through SDL2_image's IMG_Load, and asserts the resulting SDL_Surface reports width=48 and height=36 before freeing it — exercising the libwebp-backed decoder path in SDL2_image.
SDL2_image IMG_Load_RW on RGB WEBP returns a surface with BytesPerPixel of 3 or 4 Port / libwebp / usage-libsdl2-image-r19-img-load-rw-webp-bpp-twentyfour Passed
Generates an RGB WEBP via Pillow, opens it through SDL_RWFromFile, calls IMG_Load_RW with freesrc=1, and asserts the surface format BytesPerPixel value is 3 (RGB24) or 4 (RGBA32) — pinning the libwebp-backed IMG_Load_RW path.
SDL2_image IMG_SavePNG writes a non-empty PNG from a WEBP-loaded surface Port / libwebp / usage-libsdl2-image-r19-img-savepng-from-loaded-webp Passed
Generates a WEBP via Pillow, loads it through IMG_Load into an SDL surface, calls IMG_SavePNG to write a PNG copy, and asserts the resulting PNG is non-empty and identified as a PNG image by file(1) — pinning the libwebp-load + libsdl2-image-save chain.
SDL2_image IMG_isWEBP returns 1 for a Pillow-encoded WEBP RWops stream Port / libwebp / usage-libsdl2-image-r20-img-iswebp-rwops-returns-one Passed
Generates an RGB WEBP via Pillow, opens it as an SDL_RWops, calls IMG_isWEBP on the RWops and asserts the return value equals 1 — pinning SDL2_image's WEBP probe through libwebp's signature recognition.
SDL2_image IMG_Load on a WEBP returns a surface whose width and height match the source Port / libwebp / usage-libsdl2-image-r20-img-load-webp-size-matches Passed
Saves a 72x48 RGB WEBP via Pillow, calls SDL2_image IMG_Load directly on the file path and asserts the returned SDL_Surface reports w=72 and h=48 — pinning the libwebp-backed IMG_Load path's dimension exposure.
SDL2_image IMG_Load on a WEBP yields a surface with a non-null pixels pointer Port / libwebp / usage-libsdl2-image-r21-img-load-webp-pixels-non-null Passed
Generates a small RGB WEBP via Pillow, calls IMG_Load from a tiny C harness, asserts the returned SDL_Surface has a non-null pixels pointer and positive pitch — pinning SDL2_image's WebP loader path through libwebp on Ubuntu 24.04.
SDL2_image WEBP-loaded surface blits successfully onto a blank target surface Port / libwebp / usage-libsdl2-image-r21-webp-blit-onto-blank-surface Passed
Loads a WEBP via IMG_Load, allocates an RGBA target surface with SDL_CreateRGBSurface, blits the WEBP surface onto it via SDL_BlitSurface and asserts the call succeeds (return 0) — pinning SDL2_image+libwebp+SDL_BlitSurface interop on Ubuntu 24.04.
SDL2_image WebP pixel readback after load Port / libwebp / usage-libsdl2-image-r9-webp-pixel-readback Passed
Encodes a uniform red 4x4 PPM as lossless WebP, loads via SDL2_image into a 32-bit RGBA8888 surface, and asserts the centre pixel reads back as the expected red.
SDL2_image WebP alpha Port / libwebp / usage-libsdl2-image-webp-alpha Passed
SDL2_image IMG_isWEBP detection Port / libwebp / usage-libsdl2-image-webp-detect Passed
Compiles an SDL2_image client that opens a WebP fixture as an SDL_RWops, asserts IMG_isWEBP returns nonzero, then loads the surface via IMG_LoadWEBP_RW and confirms reported dimensions match.
SDL2_image WebP IMG_isWEBP detection Port / libwebp / usage-libsdl2-image-webp-isfile Passed
SDL2_image IMG_LoadWEBP_RW size check Port / libwebp / usage-libsdl2-image-webp-load-rw-size Passed
Compiles a minimal SDL2_image client that opens a WebP fixture via SDL_RWFromFile, decodes it through IMG_LoadWEBP_RW directly (bypassing the format-detection dispatch), prints the SDL_Surface dimensions, and asserts the surface is non-NULL with the expected 4x3 size.
SDL2_image IMG_LoadTexture WebP dimensions Port / libwebp / usage-libsdl2-image-webp-load-texture-dim Passed
Compiles an SDL2_image client that creates a software renderer and IMG_LoadTexture from a WebP, verifying the texture query reports the expected dimensions.
SDL2_image WebP surface BytesPerPixel Port / libwebp / usage-libsdl2-image-webp-pixel-format Passed
Compiles a minimal SDL2_image client that loads a WebP fixture via IMG_Load and reports the SDL_Surface BytesPerPixel along with size, asserting a 3-or-4 byte-per-pixel surface at 4x3 (libwebp returns RGB for opaque lossy WebP and RGBA when an alpha channel is present).
SDL2_image WebP RWops Port / libwebp / usage-libsdl2-image-webp-rwops Passed
SDL2_image WEBP version probe Port / libwebp / usage-libsdl2-image-webp-version-probe Passed
Compiles an SDL2_image client that calls IMG_Linked_Version, asserts the linked version is non-NULL with major==2, initialises IMG_INIT_WEBP, and confirms a WebP fixture loads through the same library.
Pillow add mirror WebP Port / libwebp / usage-python3-pil-add-mirror-webp Passed
Uses Pillow ImageChops.add on a generated WebP and its mirrored copy and verifies the summed pixel values before round-tripping.
python PIL autocontrast WebP Port / libwebp / usage-python3-pil-autocontrast-webp Passed
Pillow blend mirror WebP Port / libwebp / usage-python3-pil-blend-mirror-webp Passed
Blends a generated WebP with its mirrored copy in Pillow and verifies the blended pixel average before round-tripping.
python PIL border expand WebP Port / libwebp / usage-python3-pil-border-expand-webp Passed
python PIL canvas paste WebP Port / libwebp / usage-python3-pil-canvas-paste-webp Passed
Pillow composite halves WebP Port / libwebp / usage-python3-pil-composite-halves-webp Passed
Composites a generated WebP with its mirrored copy through a half-image mask in Pillow and verifies left and right pixels come from different sources.
python PIL contain WebP Port / libwebp / usage-python3-pil-contain-webp Passed
Pillow convert webp Port / libwebp / usage-python3-pil-convert-webp Passed
Pillow crops WebP Port / libwebp / usage-python3-pil-crop-webp Passed
Pillow darker mirror WebP Port / libwebp / usage-python3-pil-darker-mirror-webp Passed
Uses Pillow ImageChops.darker on a generated WebP and its mirrored copy and verifies the per-channel minima before round-tripping.
python PIL equalize WebP Port / libwebp / usage-python3-pil-equalize-webp Passed
python PIL blur filter WebP Port / libwebp / usage-python3-pil-filter-blur-webp Passed
python PIL fit WebP Port / libwebp / usage-python3-pil-fit-webp Passed
Pillow flips WebP Port / libwebp / usage-python3-pil-flip-webp Passed
python PIL getextrema WebP Port / libwebp / usage-python3-pil-getextrema-webp Passed
python PIL histogram WebP Port / libwebp / usage-python3-pil-histogram-webp Passed
Pillow invert generated WebP Port / libwebp / usage-python3-pil-invert-generated-webp Passed
Uses Pillow ImageOps.invert on a generated WebP and verifies the inverted channel values before round-tripping.
python PIL L mode WebP Port / libwebp / usage-python3-pil-l-mode-webp Passed
Pillow lighter mirror WebP Port / libwebp / usage-python3-pil-lighter-mirror-webp Passed
Uses Pillow ImageChops.lighter on a generated WebP and its mirrored copy and verifies the per-channel maxima before round-tripping.
Pillow lossless alpha WebP Port / libwebp / usage-python3-pil-lossless-alpha-webp Passed
Pillow lossless WebP Port / libwebp / usage-python3-pil-lossless-webp Passed
Pillow opens WebP from memory Port / libwebp / usage-python3-pil-memory-open-webp Passed
Loads a WebP image from an in-memory byte buffer with Pillow and verifies the decoded dimensions.
Pillow mirrors WebP Port / libwebp / usage-python3-pil-mirror-webp Passed
Mirrors a WebP image horizontally with Pillow and verifies the output dimensions remain unchanged.
Pillow multiply mirror WebP Port / libwebp / usage-python3-pil-multiply-mirror-webp Passed
Uses Pillow ImageChops.multiply on a generated WebP and its mirrored copy and verifies the multiplied pixel values before round-tripping.
python PIL offset WebP Port / libwebp / usage-python3-pil-offset-webp Passed
Pillow open webp Port / libwebp / usage-python3-pil-open-webp Passed
python PIL pad WebP Port / libwebp / usage-python3-pil-pad-webp Passed
Pillow pastes WebP onto canvas Port / libwebp / usage-python3-pil-paste-canvas-webp Passed
Pastes a WebP image onto a larger RGB canvas with Pillow and verifies the saved output dimensions.
Pillow point offset WebP Port / libwebp / usage-python3-pil-point-offset-webp Passed
Applies a point-wise channel offset to a WebP image with Pillow and verifies the transformed output remains decodable.
python PIL posterize WebP Port / libwebp / usage-python3-pil-posterize-webp Passed
python PIL quantize WebP Port / libwebp / usage-python3-pil-quantize-webp Passed
Pillow WebP animation info exposes loop count Port / libwebp / usage-python3-pil-r10-webp-info-loop-key Passed
Saves a 3-frame animated WebP with loop=2 via Pillow, reopens it, and asserts the info dict reports loop == 2 and is_animated is True.
Pillow WebP encode at quality=0 still produces a decodable image Port / libwebp / usage-python3-pil-r10-webp-quality-zero-roundtrip Passed
Saves a generated RGB image via Pillow with WebP quality=0 (smallest lossy) and verifies it reloads at the original size with format WEBP.
Pillow animated WEBP defaults info["loop"] to 0 (infinite) Port / libwebp / usage-python3-pil-r11-webp-anim-default-loop-zero Passed
Saves a 3-frame RGB WebP animation without an explicit loop= argument and confirms re-opening reports info["loop"] == 0 and n_frames == 3, exercising the libwebpmux loop-count default.
Pillow WEBP icc_profile= survives lossless save/load byte-for-byte Port / libwebp / usage-python3-pil-r11-webp-icc-profile-roundtrip Passed
Builds an sRGB ICC profile via PIL.ImageCms, saves a lossless WebP with that icc_profile=, and re-opens to confirm im.info["icc_profile"] equals the source bytes exactly.
Pillow animated WEBP with loop=3 preserves the loop count on read-back Port / libwebp / usage-python3-pil-r12-webp-anim-explicit-loop-three Passed
Saves a 2-frame WEBP animation with an explicit loop=3 argument and confirms reopening reports im.info["loop"] == 3 and n_frames == 2, exercising the libwebpmux loop-count round-trip.
Pillow WEBP exact=True preserves fully transparent RGBA pixels losslessly Port / libwebp / usage-python3-pil-r12-webp-exact-flag-rgba-roundtrip Passed
Saves an RGBA image with fully transparent pixels carrying nonzero color via Pillow with lossless=True and exact=True, then reopens and asserts the alpha=0 pixels keep their original RGB values byte-for-byte.
Pillow WEBP save method=6 round-trips geometry and format Port / libwebp / usage-python3-pil-r12-webp-method-six-roundtrip Passed
Saves a small RGB image as WEBP with method=6 (slowest/best compression) and reopens to confirm the file is detected as WEBP at the original dimensions, exercising the libwebp method effort knob.
Pillow animated WEBP with per-frame duration list reports matching frame count Port / libwebp / usage-python3-pil-r13-webp-anim-duration-list-roundtrip Passed
Saves a 3-frame animated WEBP with a per-frame duration list ([60, 120, 180]) and verifies n_frames is 3 on read-back and the file decodes with a non-zero info["duration"] per frame, exercising the libwebpmux per-frame duration list path.
Pillow animated WEBP minimize_size=True round-trips frame count Port / libwebp / usage-python3-pil-r13-webp-minimize-size-flag Passed
Saves a 3-frame WEBP animation with minimize_size=True (which forces libwebpmux to recompute frame deltas) and confirms n_frames is preserved on read-back, exercising the libwebpmux size-minimisation path.
Pillow WEBP default-quality save reloads as a same-size RGB image Port / libwebp / usage-python3-pil-r13-webp-rgb-mode-default-quality Passed
Saves a 32x24 RGB Pillow image as WEBP without any quality= argument and confirms the reload preserves size, format=WEBP, and the file's RIFF/WEBP magic header bytes.
Pillow animated WEBP background= round-trips through im.info["background"] Port / libwebp / usage-python3-pil-r14-webp-info-background-rgba-roundtrip Passed
Saves a 2-frame animated WEBP with background=(50, 100, 150, 255) and re-opens to confirm im.info["background"] is a 4-tuple of integer channel values, exercising the libwebpmux ANIM canvas background colour persistence path. Pillow returns the value as a tuple regardless of exact bit-perfect storage.
Pillow animated WEBP loop=5 round-trips through im.info["loop"] Port / libwebp / usage-python3-pil-r14-webp-info-loop-roundtrip-five Passed
Saves a 3-frame animated WEBP with loop=5 and re-opens to confirm im.info["loop"] is exactly 5, exercising the libwebpmux loop count round-trip with a non-zero finite repeat count.
Pillow animated WEBP with three frames reports n_frames == 3 and is_animated == True Port / libwebp / usage-python3-pil-r15-webp-anim-frame-count-three Passed
Saves a 3-frame animated RGB WEBP via Pillow's save_all/append_images and re-opens to confirm im.n_frames is exactly 3 and im.is_animated is True, exercising the libwebpmux animation chunk count round-trip.
Pillow lossless RGBA WEBP reload reports getbands() == ('R', 'G', 'B', 'A') Port / libwebp / usage-python3-pil-r15-webp-getbands-rgba-four Passed
Saves an RGBA Pillow image as lossless WEBP, reloads, and asserts im.mode == 'RGBA' and im.getbands() returns the canonical 4-tuple ('R', 'G', 'B', 'A'), exercising libwebp's alpha-channel preservation through Pillow.
Pillow WEBP save method=6 yields a no-larger file than method=0 at constant quality Port / libwebp / usage-python3-pil-r15-webp-method-zero-vs-six-monotonic-size Passed
Saves the same RGB image as WEBP via Pillow twice — once with method=0 (fastest) and once with method=6 (best) at quality=80 — and asserts the method=6 file size is no larger than method=0, exercising the libwebp method effort knob's monotonic size effect through Pillow.
Pillow WEBP exact=True lossless round-trip preserves RGB values under a fully-transparent alpha pixel Port / libwebp / usage-python3-pil-r16-webp-exact-flag-rgb-transparent-preserved Passed
Crafts an RGBA image with a colored pixel whose alpha is zero, saves it via Pillow as lossless WEBP with exact=True, reloads it, and asserts the underlying RGB channels of the transparent pixel are preserved exactly (libwebp exact-flag semantics).
Pillow WebP getexif on an image saved without EXIF returns an empty Exif container Port / libwebp / usage-python3-pil-r16-webp-open-getexif-no-tags Passed
Saves a small RGB image as WEBP via Pillow with no EXIF supplied, re-opens the file, and asserts Image.getexif() returns a Pillow Exif object whose length is zero — confirming libwebp's optional EXIF chunk stays absent unless explicitly written.
Pillow WEBP quality=10 yields a smaller file than quality=90 on the same source Port / libwebp / usage-python3-pil-r16-webp-quality-10-vs-90-size-delta Passed
Encodes the same RGB image as WEBP via Pillow at quality=10 and quality=90 and asserts the q=10 file is strictly smaller than q=90, exercising the lossy quality knob's size response through Pillow's libwebp binding.
Pillow WEBP lossless save+open preserves dims and mode and tbinds at RGB Port / libwebp / usage-python3-pil-r17-webp-lossless-roundtrip-dims-mode Passed
Saves an RGB image as WEBP with lossless=True via Pillow, re-opens the file, and asserts dims, mode (RGB) and format (WEBP) round-trip — without asserting exact bytes since lossless encoder output varies across versions.
Pillow WEBP method=6 produces a file no larger than method=0 at fixed quality Port / libwebp / usage-python3-pil-r17-webp-method-six-vs-zero-size-monotonic Passed
Encodes the same RGB image through Pillow as WEBP at quality=75 with method=0 and method=6, and asserts the method=6 output is no larger than method=0, exercising libwebp's method effort knob through Pillow.
Pillow WEBP save accepts minimize_size=True and round-trips dims and mode Port / libwebp / usage-python3-pil-r17-webp-minimize-size-flag-accepted Passed
Saves a small RGB image with Pillow's WEBP minimize_size=True flag, re-opens the file, and asserts the round-trip preserves mode and dimensions while producing a non-empty WebP payload.
Pillow WEBP info has no icc_profile key for an image saved without ICC Port / libwebp / usage-python3-pil-r17-webp-open-info-icc-profile-absent Passed
Saves a small RGB image as WEBP without supplying ICC, re-opens the image, and asserts the Pillow info dict either lacks the 'icc_profile' key or holds an empty/falsy value — exercising libwebp's optional ICC chunk absence path.
Pillow WEBP save_all writes a 3-frame animation reporting n_frames=3 on reopen Port / libwebp / usage-python3-pil-r18-webp-animated-save-n-frames-three Passed
Builds three distinct RGB frames in memory, saves them as an animated WEBP via Pillow with save_all=True and append_images, then reopens the file and asserts img.n_frames == 3 along with WEBP format identification.
Pillow WEBP save with exact=True preserves RGB under fully-transparent pixels Port / libwebp / usage-python3-pil-r18-webp-save-exact-true-preserves-alpha-zero-rgb Passed
Saves an RGBA image whose alpha channel is zero everywhere but with distinctive RGB values, using Pillow's WEBP encoder with exact=True and lossless=True, then asserts the round-tripped pixel keeps the exact RGB triple at transparent regions.
Pillow getbands() on a reopened RGB WEBP returns the R,G,B tuple Port / libwebp / usage-python3-pil-r19-webp-getbands-rgb-three-bands Passed
Saves an RGB image as WEBP via Pillow, reopens it through Image.open, and asserts img.getbands() returns the tuple ('R', 'G', 'B') exactly — pinning the libwebp-driven RGB band exposure.
Pillow tell() reports 0 after seek(0) on an animated WEBP and 2 after seek(2) Port / libwebp / usage-python3-pil-r19-webp-tell-after-seek-zero Passed
Saves a four-frame animated WEBP via Pillow, reopens it, seeks to frame 2 and asserts tell()==2, then seeks back to 0 and asserts tell()==0 — pinning the libwebp animation seek-and-tell semantics.
Pillow opens an RGBA WEBP and reports four bands ('R','G','B','A') Port / libwebp / usage-python3-pil-r20-webp-convert-rgba-getbands-four Passed
Saves an RGBA image to WEBP via Pillow with lossless=True, reopens with Image.open, calls load(), and asserts getbands() returns the four-tuple ('R','G','B','A') — pinning libwebp's alpha-preserving decode through PIL.
Pillow Image.open on a saved WEBP exposes img.format == 'WEBP' Port / libwebp / usage-python3-pil-r20-webp-format-attr-after-open Passed
Saves an RGB image to WEBP via Pillow, reopens with Image.open, calls load(), and asserts img.format is exactly the string 'WEBP' — pinning the libwebp-backed format identifier reported by PIL.
Pillow WebP method 0 vs 6 both decode round-trip Port / libwebp / usage-python3-pil-r9-webp-method-monotonic-size Passed
Saves the same generated RGB image with method=0 and method=6 lossy at quality=80, decodes both, and asserts both reload at the original 64x64 dimensions.
Pillow WebP RGBA split returns four bands Port / libwebp / usage-python3-pil-r9-webp-rgba-channel-split Passed
Saves an RGBA image as lossless WebP, reloads it, and asserts Image.split returns four single-band images each of the original dimensions.
Pillow WebP thumbnail preserves aspect ratio Port / libwebp / usage-python3-pil-r9-webp-thumbnail-aspect Passed
Loads a 200x100 generated RGB image, encodes it as WebP, decodes, calls Image.thumbnail((50,50)) and asserts the thumbnail is 50x25.
python PIL red channel WebP Port / libwebp / usage-python3-pil-red-channel-webp Passed
Pillow resizes WebP Port / libwebp / usage-python3-pil-resize-webp Passed
Pillow rotates WebP 270 degrees Port / libwebp / usage-python3-pil-rotate-270-webp Passed
python PIL rotate expand WebP Port / libwebp / usage-python3-pil-rotate-expand-webp Passed
Pillow rotates WebP Port / libwebp / usage-python3-pil-rotate-webp Passed
Pillow save webp Port / libwebp / usage-python3-pil-save-webp Passed
Pillow screen mirror WebP Port / libwebp / usage-python3-pil-screen-mirror-webp Passed
Uses Pillow ImageChops.screen on a generated WebP and its mirrored copy and verifies the screened pixel values before round-tripping.
python PIL solarize WebP Port / libwebp / usage-python3-pil-solarize-webp Passed
python PIL split merge WebP Port / libwebp / usage-python3-pil-split-merge-webp Passed
python PIL stat mean WebP Port / libwebp / usage-python3-pil-stat-mean-webp Passed
Pillow subtract mirror WebP Port / libwebp / usage-python3-pil-subtract-mirror-webp Passed
Uses Pillow ImageChops.subtract on mirrored and original generated WebPs and verifies the non-negative channel differences before round-tripping.
Pillow thumbnails WebP Port / libwebp / usage-python3-pil-thumbnail-webp Passed
python PIL transpose WebP Port / libwebp / usage-python3-pil-transpose-webp Passed
Pillow transverse generated WebP Port / libwebp / usage-python3-pil-transverse-generated-webp Passed
Applies Pillow transverse transpose to a generated WebP and verifies both the swapped dimensions and mapped corner pixels before round-tripping.
Pillow WebP save alpha_quality kwarg Port / libwebp / usage-python3-pil-webp-alpha-quality Passed
Saves an RGBA image to WebP via Pillow with quality=80 and alpha_quality=40, then reopens the file and asserts it remains an RGBA WebP at the source dimensions with the alpha channel preserved.
Pillow WebP alpha channel Port / libwebp / usage-python3-pil-webp-alpha Passed
Pillow WebP animated frame count Port / libwebp / usage-python3-pil-webp-animated-frame-count-batch11 Passed
Pillow animated WebP frame size verification Port / libwebp / usage-python3-pil-webp-animated-frame-sizes Passed
Encodes a four-frame animated WebP from Pillow and asserts that each decoded frame matches the canvas size and reports the expected solid color at the center pixel.
Pillow WebP animated seek second Port / libwebp / usage-python3-pil-webp-animated-seek-second-batch11 Passed
Pillow WebP animation frame count roundtrip Port / libwebp / usage-python3-pil-webp-animation-duration-roundtrip Passed
Saves an animated WebP with explicit per-frame durations through Pillow, then reopens the file and verifies the format identifier, the is_animated flag, and the n_frames count match what was saved, and that each frame's pixel content roundtrips to the colour written into it.
Pillow WebP save_all with append_images list Port / libwebp / usage-python3-pil-webp-append-images Passed
Builds a four-frame animated WebP via Pillow with save_all and an explicit append_images list of three sibling frames, then reopens and asserts is_animated, n_frames==4, and that seek to each frame returns the expected solid color.
Pillow WebP BytesIO open Port / libwebp / usage-python3-pil-webp-bytesio-open-batch11 Passed
Pillow WebP contain size Port / libwebp / usage-python3-pil-webp-contain-size-batch11 Passed
Pillow WebP crop save and reload Port / libwebp / usage-python3-pil-webp-crop-save-reload Passed
Opens a WebP fixture with Pillow, crops a sub-rectangle, saves the crop as a new WebP, and reloads the saved file to verify the crop dimensions and a sample pixel survive the save/reload roundtrip.
Pillow WebP animated disposal/blend Port / libwebp / usage-python3-pil-webp-disposal-blend Passed
Saves an animated WebP through Pillow with explicit disposal=2 and blend=0 per frame, then walks each frame back via seek and confirms pixel sampling.
Pillow WebP exact lossless RGBA roundtrip Port / libwebp / usage-python3-pil-webp-exact-lossless-rgba Passed
Saves an RGBA Pillow image to WebP with exact=True and lossless=True, then verifies pixel-exact roundtrip.
Pillow WebP exact=True preserves transparent RGB Port / libwebp / usage-python3-pil-webp-exact-transparent Passed
Saves an RGBA image with fully-transparent pixels carrying distinct RGB values to a lossless WebP using Pillow with exact=True, then reopens and asserts the transparent pixel's RGB values are preserved byte-for-byte.
Pillow WebP EXIF roundtrip Port / libwebp / usage-python3-pil-webp-exif-empty-roundtrip-batch11 Passed
Pillow WebP feature check Port / libwebp / usage-python3-pil-webp-feature-check-batch11 Passed
Pillow WebP getbbox Port / libwebp / usage-python3-pil-webp-getbbox Passed
Opens a WebP fixture with Pillow and verifies getbbox returns a bounding box that fits within the source image dimensions.
Pillow WebP grayscale mode Port / libwebp / usage-python3-pil-webp-grayscale-mode Passed
Converts a WebP fixture through Pillow grayscale L mode, saves as WebP, and verifies the reopened pixel has equal R, G, and B channels.
Pillow WebP histogram length Port / libwebp / usage-python3-pil-webp-histogram-length Passed
Opens a WebP fixture with Pillow and verifies the RGB histogram has 768 bins summing to width times height times three.
Pillow WebP save with explicit icc_profile bytes Port / libwebp / usage-python3-pil-webp-icc-profile-bytes Passed
Saves a WebP through Pillow embedding a synthetic icc_profile byte string, then reopens the file and verifies the format and that info['icc_profile'] roundtrips byte-for-byte.
Pillow lossless RGBA WebP per-pixel exact roundtrip Port / libwebp / usage-python3-pil-webp-lossless-alpha-pixel-exact Passed
Saves a synthesized RGBA image with varying alpha values per pixel to lossless WebP via Pillow, reloads it, and asserts every pixel including its alpha channel matches the original byte-for-byte.
Pillow WebP lossless save with method=0 (fast) Port / libwebp / usage-python3-pil-webp-lossless-method-zero Passed
Saves an RGB image as lossless WebP through Pillow with method=0 (fastest) and verifies the file decodes back as a WEBP image with the original dimensions and pixel.
Pillow WebP lossless RGB mode Port / libwebp / usage-python3-pil-webp-lossless-rgb-mode-batch11 Passed
Pillow WebP lossless RGBA mode preserved on reopen Port / libwebp / usage-python3-pil-webp-lossless-rgba-mode-preserved Passed
Saves an RGBA image as lossless WebP via Pillow and verifies the reopened image has mode RGBA with intact alpha channel extrema.
Pillow WebP save method=5 Port / libwebp / usage-python3-pil-webp-method-five Passed
Saves an RGB image to WebP with quality=80 and method=5 via Pillow and confirms the output reloads as a WebP at the source dimensions with format=='WEBP'.
Pillow WebP method one save Port / libwebp / usage-python3-pil-webp-method-one-save Passed
Saves a synthetic RGB image to WebP through Pillow with encoder method=1 (fast path) and verifies the file is a valid WebP that reopens with the expected mode and size.
Pillow WebP method six save Port / libwebp / usage-python3-pil-webp-method-six-save-batch11 Passed
Pillow WebP save method=3 Port / libwebp / usage-python3-pil-webp-method-three Passed
Saves an RGB Pillow image to lossy WebP with method=3 and verifies the output reopens as WEBP at the source dimensions.
Pillow WebP method=0 fast vs method=6 best Port / libwebp / usage-python3-pil-webp-method-zero-vs-six Passed
Saves the same RGB image with Pillow at WebP method=0 and method=6, verifying both reload as WEBP with matching dimensions.
Pillow WebP n_frames vs is_animated discrimination Port / libwebp / usage-python3-pil-webp-n-frames-vs-is-animated Passed
Saves a still and an animated WebP through Pillow and verifies that Image.open reports is_animated=False with n_frames==1 for the still file and is_animated=True with n_frames>1 for the animated file.
Pillow WebP near_lossless=60 Port / libwebp / usage-python3-pil-webp-near-lossless-sixty Passed
Saves an RGB Pillow image with lossless=True and a moderate quality used as the near-lossless preprocessing level, then reopens it and confirms the WebP roundtrip preserves the canvas dimensions.
Pillow opens WebP, crops with Image.crop, saves+reloads, checks corner pixels Port / libwebp / usage-python3-pil-webp-open-crop-reload-pixel Passed
Opens a WebP fixture with Pillow, crops a 5x4 sub-rectangle via Image.crop, saves the crop as lossless WebP, reloads it, and asserts both the size and the four corner pixel RGB values match the corresponding pixels in the source crop.
Pillow WebP palette convert Port / libwebp / usage-python3-pil-webp-palette-convert-batch11 Passed
Pillow WebP paste corner Port / libwebp / usage-python3-pil-webp-paste-corner Passed
Pastes a WebP fixture into the right half of a black canvas with Pillow and verifies the unpasted left corner stays black after a WebP round trip.
Pillow WebP quality progression monotonic Port / libwebp / usage-python3-pil-webp-quality-progression Passed
Saves the same RGB image at Pillow WebP quality 20, 50, 90 and asserts file sizes are strictly monotonic increasing.
Pillow WebP quality save Port / libwebp / usage-python3-pil-webp-quality-save Passed
Pillow WebP RGBA alpha extrema Port / libwebp / usage-python3-pil-webp-rgba-alpha-extrema-batch11 Passed
Pillow WebP save_all three frames Port / libwebp / usage-python3-pil-webp-save-all-three-frames Passed
Pillow WebP seek to last frame Port / libwebp / usage-python3-pil-webp-seek-last-frame Passed
Saves a four-frame animated WebP through Pillow then opens it and seeks directly to n_frames-1, verifying tell() and the pixel value at the last frame.
Pillow WebP save sharpness=4 Port / libwebp / usage-python3-pil-webp-sharpness-four Passed
Saves a still PNG to lossy WebP through Pillow with the WebP encoder sharpness=4 option, then verifies the round-tripped image opens with the source dimensions.
Pillow WebP split bands Port / libwebp / usage-python3-pil-webp-split-bands Passed
Splits a WebP fixture into RGB bands with Pillow and verifies three single-channel L-mode bands matching the source size.
Pillow WebP thumbnail then save Port / libwebp / usage-python3-pil-webp-thumbnail-then-save Passed
Opens a WebP fixture with Pillow, calls Image.thumbnail to shrink in place, saves the result as a new WebP, and reloads it to verify it is valid WEBP with shrunk dimensions.
Pillow WebP tobytes length Port / libwebp / usage-python3-pil-webp-tobytes-length Passed
Opens a WebP fixture with Pillow, converts to RGB, and verifies tobytes returns width times height times three bytes.
Pillow WebP Image.transpose FLIP_TOP_BOTTOM roundtrip Port / libwebp / usage-python3-pil-webp-transpose-flip-top-bottom-roundtrip Passed
Opens a WebP fixture with Pillow, applies Image.transpose(FLIP_TOP_BOTTOM), saves the result as lossless WebP, reloads it, and asserts the dimensions are unchanged and that pixel (0,0) of the flipped image equals pixel (0, h-1) of the source.
vips embeds WebP Port / libwebp / usage-vips-embed-webp Passed
vips vertical flip WebP Port / libwebp / usage-vips-flip-vertical-webp Passed
vips webpload n=-1 stacks all animation frames vertically Port / libwebp / usage-vips-r10-webpload-n-equals-all-frames Passed
Builds a 4-frame animated WebP via Pillow then loads it through vips webpload with n=-1, asserting the resulting strip height equals base_height * 4.
vips webpsave with mixed=true on animation produces a valid WebP Port / libwebp / usage-vips-r10-webpsave-mixed-flag Passed
Encodes a 3-frame WebP via Pillow, reloads via vips webpload --n -1, then re-encodes through vips webpsave --mixed and asserts the output reloads at the original base dimensions.
vips webpload --page 0 selects the first frame of an animated WebP Port / libwebp / usage-vips-r11-webpload-page-zero-explicit Passed
Builds a 4-frame animated WebP via Pillow then loads it through vips webpload with an explicit --page 0, asserting the output PNG matches the base frame geometry exactly (no vertical strip stacking).
vips webpsave --near-lossless emits a structurally valid WebP Port / libwebp / usage-vips-r11-webpsave-near-lossless-flag Passed
Encodes an RGB image through vips webpsave with --near-lossless and a low Q, then verifies the output is a valid WebP that decodes back to the original geometry.
vips webpload --shrink 2 halves WebP output dimensions Port / libwebp / usage-vips-r12-webpload-shrink-by-two Passed
Builds a 64x48 RGB WebP via Pillow and loads it through vips webpload --shrink 2, asserting the loaded image is exactly 32x24, exercising the integer-shrink decode path.
vips webpsave --Q 10 yields a smaller file than --Q 95 Port / libwebp / usage-vips-r12-webpsave-q-low-vs-high-size Passed
Encodes a synthetic RGB image through vips webpsave at --Q 10 and --Q 95 and asserts the low-Q file is strictly smaller and both files are recognised as WebP, exercising the lossy quality scale.
vips webpsave --smart-subsample produces a valid WebP at the original size Port / libwebp / usage-vips-r12-webpsave-smart-subsample-flag-roundtrip Passed
Encodes a synthetic RGB image through vips webpsave with --smart-subsample and a fixed Q, then verifies the output is a structurally valid WebP that decodes back to the original geometry via vipsheader.
vips copy ... .webp[Q=70] writes a WebP file with positive byte length Port / libwebp / usage-vips-r13-webpsave-buffer-size-positive Passed
Encodes a synthetic PPM through vips copy with a webp[] options suffix and verifies the output starts with the RIFF/WEBP magic and exceeds 24 bytes, exercising the parameterised webp output path used as a buffer-encode equivalent.
vips webpsave --preset drawing produces a valid WebP at original geometry Port / libwebp / usage-vips-r13-webpsave-preset-drawing-roundtrip Passed
Encodes a synthetic RGB image through vips webpsave --preset drawing at a fixed Q and verifies the output is recognised as WebP and reloads at the input dimensions, exercising the preset selector path.
vips webpsave --preset photo produces a valid WebP at original geometry Port / libwebp / usage-vips-r13-webpsave-preset-photo-roundtrip Passed
Encodes a synthetic RGB image through vips webpsave --preset photo at a fixed Q and verifies the output is recognised as WebP and reloads at the input dimensions via vipsheader, exercising the photo preset's encoder configuration.
vips webpload of an RGB-source WebP reports bands=3 Port / libwebp / usage-vips-r14-webpload-buffer-bands-three-rgb Passed
Encodes an RGB PNG to WebP via Pillow, runs it through vips webpload to a .v file, and asserts vipsheader reports bands=3 (RGB) and matching dimensions, exercising the WebP RGB decode path through vips.
vips webpsave --alpha-q 50 emits a structurally valid RGBA WebP at original geometry Port / libwebp / usage-vips-r14-webpsave-alpha-q-roundtrip Passed
Encodes an RGBA PNG through vips webpsave with --alpha-q 50 and confirms the output is recognised as WebP and reloads with bands=4 (RGBA) and the original geometry, exercising the dedicated alpha-channel quality knob.
vips webpload --shrink 4 quarters both WebP dimensions Port / libwebp / usage-vips-r15-webpload-shrink-four-quarters-dimensions Passed
Saves a 64x48 RGB WebP via Pillow and runs it through vips webpload --shrink 4, then asserts vipsheader reports width=16 and height=12 (each axis quartered), exercising the libwebp DCT-domain integer subsample-on-load path.
vips webpsave --preset text emits a structurally valid WebP at original geometry Port / libwebp / usage-vips-r15-webpsave-preset-text-roundtrip Passed
Encodes a PPM through vips webpsave with --preset text and confirms the output is recognised as WebP and reloads with the original width and height, exercising the libwebp text-content tuning preset through vips.
vips webpsave --Q 0 yields a file no larger than --Q 100 on the same source Port / libwebp / usage-vips-r15-webpsave-q-zero-vs-q-hundred-monotonic-size Passed
Encodes the same PPM through vips webpsave at --Q 0 and --Q 100 and asserts the Q=0 output is no larger than Q=100, exercising the lossy quality-driven byte-size monotonicity through vips at the extreme endpoints.
vips webpload after webpsave preserves source PPM dimensions through a PNG round-trip Port / libwebp / usage-vips-r16-webp-roundtrip-png-dimensions-preserved Passed
Encodes a PPM to WEBP via vips webpsave, loads the WEBP back via vips webpload and writes it out as PNG, then asserts both intermediates report the original 80x60 dimensions through vipsheader's width/height fields.
vips webpsave effort=6 produces a file no larger than effort=0 at fixed --Q Port / libwebp / usage-vips-r16-webpsave-effort-zero-vs-six-monotonic Passed
Encodes the same PPM through vips webpsave at --Q 70 with effort=0 (fastest) and effort=6 (best), and asserts the effort=6 file size is no larger than the effort=0 file, exercising libwebp's method/effort knob's monotonic size effect via vips.
vips webpsave --Q 50 yields a strictly smaller file than --Q 90 on the same PPM source Port / libwebp / usage-vips-r16-webpsave-q-50-vs-q-90-size-delta Passed
Encodes the same generated PPM through vips webpsave at --Q 50 and --Q 90 and asserts the Q=50 output is strictly smaller than Q=90, exercising the lossy quality knob's size response on a mid-vs-high pair.
vips webpsave --alpha-q 50 produces a valid WEBP file from an RGBA PNG Port / libwebp / usage-vips-r17-webpsave-alpha-q-50-valid-output Passed
Builds a tiny RGBA PNG via Pillow, encodes it to WEBP through vips webpsave with --alpha-q 50, and asserts the result is detected as WEBP by file(1) and that vipsheader reports dims matching the input PNG.
vips webpsave --preset picture flag is accepted and produces a valid WEBP file Port / libwebp / usage-vips-r17-webpsave-preset-picture-flag-accepted Passed
Encodes a PPM via vips webpsave with the --preset picture flag, asserts the resulting file is identified as WEBP by file(1), and confirms dims round-trip via vipsheader.
vips webpsave with effort=4 produces a valid WEBP file Port / libwebp / usage-vips-r18-webpsave-effort-4-flag-accepted Passed
Encodes a PPM via vips webpsave with --effort=4, asserts the output is identified as WEBP by file(1), and asserts vipsheader reports the original PPM dimensions on read-back of the encoded WEBP.
vips webpsave --strip emits a valid WEBP file with matching dims Port / libwebp / usage-vips-r18-webpsave-strip-flag-accepted Passed
Encodes a PPM with vips webpsave --strip to drop ancillary metadata, asserts the output is identified as WEBP by file(1), and verifies vipsheader reports the source dimensions.
vips webpsave then webpload preserves total pixel count (width*height) for a still Port / libwebp / usage-vips-r19-webp-roundtrip-preserves-pixel-count Passed
Encodes a 40x30 PPM to WEBP via vips webpsave, then reads it back via vips webpload to a new PNG, and asserts vipsheader reports the PNG has 40*30=1200 pixels via width*height, locking in lossy-roundtrip dimension preservation.
vips webpsave --Q 100 produces a non-empty WEBP that vipsheader reports as RGB Port / libwebp / usage-vips-r19-webpsave-q-100-non-empty-output Passed
Encodes a PPM through vips webpsave at maximum quality --Q 100, asserts the output is identified as WEBP by file(1), is non-empty, and that vipsheader reports bands=3 confirming the libwebp encoder produced a regular RGB stream.
vips webpsave with --lossless writes a WEBP whose vipsheader width/height match the source Port / libwebp / usage-vips-r20-webpsave-lossless-flag-reports-vipsheader-dims Passed
Encodes a 50x40 PPM to WEBP via vips webpsave --lossless and asserts vipsheader -f width and -f height on the resulting WEBP report 50 and 40 respectively, pinning libwebp's lossless-mode dimension preservation through vips.
vips webpsave at Q=30 produces a smaller file than at Q=90 for the same source Port / libwebp / usage-vips-r20-webpsave-quality-30-vs-90-size-monotonic Passed
Saves the same 64x48 PPM to WEBP twice via vips webpsave at quality 30 and 90, and asserts the file size at Q=30 is strictly less than the file size at Q=90, pinning libwebp's quality->size monotonic behavior through vips.
vips webpload followed by jpegsave preserves width and height across the roundtrip Port / libwebp / usage-vips-r21-webpload-then-jpegsave-dimensions-preserved Passed
Encodes a PNG to WEBP via vips webpsave, then loads it with webpload and writes a JPEG, asserting the final JPEG reports the same width and height as the source — pinning libwebp decode dimensions through the vips pipeline on Ubuntu 24.04.
vips webpsave effort=6 produces an output no larger than effort=0 at fixed Q Port / libwebp / usage-vips-r21-webpsave-effort-zero-vs-six-monotonic-size Passed
Encodes the same noisy RGB source to WEBP via vips webpsave at effort=0 and effort=6 with Q=80, asserting effort=6 output size is less than or equal to effort=0 — pinning libwebp's encoder-effort tradeoff through vips on Ubuntu 24.04.
vips webpsave_buffer at Q=50 yields a shorter buffer than Q=95 for identical source Port / libwebp / usage-vips-r21-webpsave-q-50-vs-q-95-buffer-length-monotonic Passed
Loads a JPEG via vips, encodes it to an in-memory WEBP buffer at Q=50 and Q=95 using webpsave_buffer, and asserts the Q=50 buffer length is strictly smaller than Q=95 — pinning vips' Q parameter propagation through libwebp's encoder on Ubuntu 24.04.
vips webpload shrink halves dimensions Port / libwebp / usage-vips-r9-webp-shrink-on-load Passed
Encodes a 64x64 WebP and reloads it via vips webpload with --shrink 2, asserting the loaded image is 32x32.
vips webpsave effort 6 produces smaller-or-equal output than effort 0 Port / libwebp / usage-vips-r9-webpsave-effort-six Passed
Encodes the same source PNG via vips webpsave with effort=0 and effort=6 (both lossy Q=75), and verifies both files are valid WebP.
vips rotates WebP 180 degrees Port / libwebp / usage-vips-rot180-webp Passed
Rotates a WebP image by 180 degrees with vips and verifies the output dimensions remain unchanged.
vips webpsave_buffer / webpload_buffer roundtrip Port / libwebp / usage-vips-webp-buffer-roundtrip Passed
Drives vips webpsave_buffer then webpload_buffer through python-pyvips-style stdin/stdout descriptor pipes and verifies the round-tripped pixel and dimensions.
vips crops WebP Port / libwebp / usage-vips-webp-crop Passed
vips WebP embed canvas Port / libwebp / usage-vips-webp-embed-canvas Passed
Embeds a WebP fixture into an 8x6 canvas with vips embed and verifies vipsheader reports the enlarged canvas dimensions.
vips WebP extract_area header Port / libwebp / usage-vips-webp-extract-area-header Passed
Extracts a 3x2 area from a WebP fixture with vips and verifies vipsheader reports the cropped dimensions on the resulting PNG.
vips flips WebP Port / libwebp / usage-vips-webp-flip Passed
vips webp header Port / libwebp / usage-vips-webp-header Passed
vips WebP to JPEG Port / libwebp / usage-vips-webp-jpeg-copy Passed
vips WebP to PNG Port / libwebp / usage-vips-webp-png-copy Passed
vips webp resize Port / libwebp / usage-vips-webp-resize Passed
vips rotates WebP Port / libwebp / usage-vips-webp-rotate Passed
vips webpload n=-1 reads all animation frames Port / libwebp / usage-vips-webpload-all-frames Passed
Builds a three-frame animated WebP with img2webp, then loads it through vips with [n=-1] (read every frame stacked vertically) and confirms the resulting page-stack height equals 3 * frame_height while page-height reports the per-frame height.
vips webpload then write to PNG Port / libwebp / usage-vips-webpload-write-png Passed
Loads a WebP fixture through vips and writes it out as PNG, verifying the PNG file magic, dimensions reported by vipsheader, and that getpoint can read pixels back from the converted file.
vips webpsave alpha_q Port / libwebp / usage-vips-webpsave-alpha-q Passed
Saves an RGBA PNG to WebP through vips with an explicit alpha_q value and verifies bands and loader.
vips webpsave writes WebP buffer to /dev/stdout Port / libwebp / usage-vips-webpsave-buffer-stdout Passed
Loads a generated PNG through vips and writes the WebP encoding directly to /dev/stdout via the explicit on-disk path; captures the bytes to a file, asserts the file magic is WebP, and confirms vipsheader can re-read the captured WebP and reports the original width and height.
vips webpsave lossless=true Port / libwebp / usage-vips-webpsave-lossless Passed
Re-encodes an RGB WebP through vips webpsave with lossless=true and verifies the output decodes via webpload at preserved dimensions with three bands and that getpoint reproduces a known input pixel exactly.
vips webpsave min_size=false Port / libwebp / usage-vips-webpsave-min-size-false Passed
Saves a still image as WebP through vips with min_size=false explicitly disabled and verifies the result decodes back as WebP via vipsheader and vips getpoint.
vips webpsave min_size Port / libwebp / usage-vips-webpsave-min-size Passed
Saves a still image as WebP through vips with min_size=true and verifies the output is a WebP whose dimensions and loader survive vipsheader.
vips webpsave near_lossless Port / libwebp / usage-vips-webpsave-near-lossless Passed
vips webpsave preset=icon Port / libwebp / usage-vips-webpsave-preset-icon Passed
Re-encodes a small WebP via vips webpsave with preset=icon at quality 90 and confirms the output remains a 4x3 webpload-readable WebP.
vips webpsave preset=text Port / libwebp / usage-vips-webpsave-preset-text Passed
Re-encodes a WebP via vips webpsave with preset=text and verifies the output is loaded through webpload at the original dimensions.
vips webpsave maximum Q=100 Port / libwebp / usage-vips-webpsave-q-100-maximum Passed
Re-encodes a WebP through vips webpsave with Q=100 (maximum quality) and verifies the output is a WebP with preserved dimensions and a decodable sample pixel.
vips webpsave reduction_effort=6 (slow) Port / libwebp / usage-vips-webpsave-reduction-effort-six Passed
Re-encodes a small WebP through vips webpsave with the slowest reduction_effort=6 setting and verifies the output WebP header, dimensions, and that vips can reload the file.
vips webpsave reduction_effort=0 Port / libwebp / usage-vips-webpsave-reduction-effort-zero Passed
Saves a still image through vips webpsave with the lossless reduction_effort=0 fast preset and verifies the output is a WebP whose dimensions and a sampled pixel survive the round-trip.
vips webpsave smart_subsample Port / libwebp / usage-vips-webpsave-smart-subsample Passed
Saves a PNG to WebP through vips with smart_subsample=true and verifies the output dimensions via vipsheader.
gdk-pixbuf-csource on a complex WebP Port / libwebp / usage-webp-pixbuf-loader-csource-complex Passed
Encodes a larger varied-pattern WebP through cwebp and runs gdk-pixbuf-csource on it to confirm the WebP pixbuf loader decodes a non-trivial image and gdk-pixbuf-csource emits the GdkPixdata header with the expected width, height, and named array.
gdk-pixbuf-csource on WebP Port / libwebp / usage-webp-pixbuf-loader-csource Passed
Generates a C source pixel data array from a WebP fixture via gdk-pixbuf-csource using the WebP pixbuf loader.
gdk-pixbuf WebP info Port / libwebp / usage-webp-pixbuf-loader-info Passed
gdk-pixbuf-thumbnailer WebP preserves square dims Port / libwebp / usage-webp-pixbuf-loader-pixbuf-from-file Passed
Builds a 24x24 WebP fixture and asks gdk-pixbuf-thumbnailer for an 8-pixel thumbnail through the WebP pixbuf loader, verifying the output PNG exists, decodes via Pillow as a square 8x8 image, and that the thumbnailer fed pixels through the loader.
webp-pixbuf-loader pixbuf thumbnail Port / libwebp / usage-webp-pixbuf-loader-pixbuf-thumbnail Passed
gdk-pixbuf WebP pixdata --rle binary header Port / libwebp / usage-webp-pixbuf-loader-pixdata-name Passed
Loads a WebP fixture via gdk-pixbuf-pixdata with --rle (RLE compression on) and verifies the produced pixdata blob exists, is non-empty, and starts with the GdkPixdata magic ("GdkP", 0x47646b50) confirming the WebP pixbuf loader fed real pixels through the pixdata serializer.
gdk-pixbuf-query-loaders includes WebP Port / libwebp / usage-webp-pixbuf-loader-query-loaders-includes-webp Passed
Runs gdk-pixbuf-query-loaders and verifies the WebP pixbuf loader is registered, decoding the loader cache for the WebP MIME type and image/webp entry.
webp-pixbuf-loader registers a loadable .so at the expected GdkPixbuf loaders path Port / libwebp / usage-webp-pixbuf-loader-r10-thumbnailer-shows-image-webp Passed
Verifies that the webp-pixbuf-loader package installs a loadable .so (libpixbufloader-webp.so) under /usr/lib/<triplet>/gdk-pixbuf-2.0/2.10.0/loaders and that the resulting loader cache (generated with gdk-pixbuf-query-loaders at its install-tree path) advertises the WebP extension. Covers the filesystem-level registration that the cache enumeration test does not.
webp-pixbuf-loader registers the image/webp MIME type in loaders.cache Port / libwebp / usage-webp-pixbuf-loader-r11-loader-cache-mime-image-webp Passed
Reads the system gdk-pixbuf loaders.cache and asserts a libpixbufloader-webp.so block is present and that the same record advertises the image/webp MIME type and the .webp extension token.
gdk-pixbuf-pixdata decodes a palette-encoded WebP via the webp loader Port / libwebp / usage-webp-pixbuf-loader-r11-pixdata-palette-webp-roundtrip Passed
Saves a P-mode (palette) lossless WebP via Pillow then runs gdk-pixbuf-pixdata to convert it to a GdkPixdata blob, asserting the loader emits a non-empty stream beginning with the 'GdkP' magic.
gdk-pixbuf-pixdata decodes an RGBA lossless WebP via the webp loader Port / libwebp / usage-webp-pixbuf-loader-r12-pixdata-rgba-webp-magic-header Passed
Saves an RGBA lossless WebP via Pillow then runs gdk-pixbuf-pixdata to convert it to a GdkPixdata blob, asserting the loader emits a non-empty stream beginning with the four-byte 'GdkP' magic.
gdk-pixbuf-pixdata decodes a grayscale-derived RGB WebP via the webp loader Port / libwebp / usage-webp-pixbuf-loader-r13-pixdata-grayscale-webp-magic Passed
Builds an L-mode (grayscale) Pillow image, converts to RGB, saves as WebP, then runs gdk-pixbuf-pixdata over it and asserts the resulting GdkPixdata blob starts with the four-byte 'GdkP' magic, confirming the loader handled the WebP via the webp-pixbuf-loader plugin.
gdk-pixbuf-pixdata on an RGB WebP emits a 'GdkP' blob larger than its input Port / libwebp / usage-webp-pixbuf-loader-r14-pixdata-rgb-magic-and-size Passed
Saves a small RGB WebP via Pillow, runs gdk-pixbuf-pixdata over it, and asserts the resulting GdkPixdata blob starts with the four-byte 'GdkP' magic and is at least the size of an uncompressed pixmap raster (width*height*3 bytes), confirming the WebP loader produced a fully-decoded pixbuf payload.
gdk-pixbuf-query-loaders cache lists the .webp extension and 'webp' format name Port / libwebp / usage-webp-pixbuf-loader-r14-query-loaders-extension-webp Passed
Runs gdk-pixbuf-query-loaders and asserts the resulting loader cache contains both the bare 'webp' format token (loader name) and the explicit '.webp' or '"webp"' extension entry, confirming the loader is fully registered with gdk-pixbuf.
gdk-pixbuf-query-loaders cache lists the image/webp MIME type alongside the webp loader name Port / libwebp / usage-webp-pixbuf-loader-r15-loaders-cache-mime-image-webp Passed
Runs gdk-pixbuf-query-loaders, captures the resulting cache, and asserts both the literal image/webp MIME line and the bare 'webp' format token appear in it, confirming the WebP loader registers its MIME mapping with gdk-pixbuf.
gdk-pixbuf-query-loaders cache pairs the webp extension with the image/webp MIME entry Port / libwebp / usage-webp-pixbuf-loader-r16-query-loaders-extension-and-mime Passed
Runs gdk-pixbuf-query-loaders, captures the cache, and asserts the output simultaneously contains the bare 'webp' format token, the 'image/webp' MIME line, and a quoted '.webp' extension/glob entry — locking in extension + MIME registration of the WebP gdk-pixbuf loader.
gdk-pixbuf-query-loaders advertises the webp format with its descriptive name Port / libwebp / usage-webp-pixbuf-loader-r17-query-loaders-webp-format-name Passed
Runs gdk-pixbuf-query-loaders, captures the cache, and asserts the listing contains the "WebP image" human-readable name field along with the bare 'webp' format token — exercising the pixbuf module manifest contributed by webp-pixbuf-loader.
gdk-pixbuf-pixdata reads a Pillow-saved WEBP and emits a non-empty GdkPixdata stream Port / libwebp / usage-webp-pixbuf-loader-r18-pixdata-prints-image-magic Passed
Saves a small WEBP via Pillow, runs gdk-pixbuf-pixdata to convert it to a pixdata C source stream, asserts the output starts with the GDK_PIXBUF_C_SOURCE / GdkPixdata C identifiers, confirming the webp-pixbuf-loader module loaded a WEBP successfully.
gdk-pixbuf-query-loaders lists image/webp as a registered MIME type Port / libwebp / usage-webp-pixbuf-loader-r18-query-loaders-image-webp-mime Passed
Invokes gdk-pixbuf-query-loaders and asserts the resulting loader manifest contains the image/webp MIME entry contributed by webp-pixbuf-loader, evidencing libwebp-backed loader registration.
gdk-pixbuf-query-loaders advertises the .webp file extension under webp-pixbuf-loader Port / libwebp / usage-webp-pixbuf-loader-r19-query-loaders-webp-extension-listed Passed
Runs gdk-pixbuf-query-loaders and asserts the produced loader cache mentions the bare 'webp' token paired with the image/webp MIME, confirming the webp-pixbuf-loader registers its extension and MIME together.
gdk-pixbuf-query-loaders cache lists at least two LoaderDir paths around the webp loader Port / libwebp / usage-webp-pixbuf-loader-r20-query-loaders-cache-multiple-loaders Passed
Runs gdk-pixbuf-query-loaders and asserts the produced cache contains an explicit "LoaderDir" comment header and that the webp loader appears together with at least one other distinct .so module path — pinning that the webp-pixbuf-loader coexists with the wider GdkPixbuf loader set on Ubuntu 24.04.
gdk-pixbuf-query-loaders cache references a libpixbufloader-webp module path Port / libwebp / usage-webp-pixbuf-loader-r20-query-loaders-libpixbufloader-webp-path Passed
Runs gdk-pixbuf-query-loaders and asserts the cache lists a module path matching libpixbufloader-webp.so (the shared object that ships in the webp-pixbuf-loader package), pinning the GdkPixbuf loader discovery for libwebp on Ubuntu 24.04.
gdk-pixbuf-pixdata reads a WEBP via the webp-pixbuf-loader and emits a non-empty GdkPixdata struct Port / libwebp / usage-webp-pixbuf-loader-r21-gdk-pixbuf-pixdata-runs-on-webp Passed
Encodes a small RGB WEBP via Pillow and runs gdk-pixbuf-pixdata on it, asserting the binary GdkPixdata output is non-empty — pinning the webp-pixbuf-loader's bridging into gdk-pixbuf-pixdata on Ubuntu 24.04.
gdk-pixbuf-query-loaders output advertises an image/* webp MIME entry Port / libwebp / usage-webp-pixbuf-loader-r21-query-loaders-image-x-webp-mime Passed
Runs gdk-pixbuf-query-loaders, captures the cache, and asserts the cache mentions an image-class MIME entry referencing webp (image/webp or image/x-webp) — pinning webp-pixbuf-loader's GdkPixbuf MIME registration on Ubuntu 24.04.
gdk-pixbuf-pixdata decodes a non-alpha WebP via the loader Port / libwebp / usage-webp-pixbuf-loader-r9-pixbuf-rgb-channels Passed
Encodes a lossy non-alpha WebP via cwebp then runs gdk-pixbuf-pixdata to confirm the GdkPixbuf WebP loader decodes it and emits a non-empty pixdata blob with the GdkP magic.
gdk-pixbuf-pixdata loads an RGBA WebP via the GdkPixbuf WebP loader Port / libwebp / usage-webp-pixbuf-loader-r9-pixbuf-rgba-channels Passed
Encodes an RGBA WebP via Pillow then runs gdk-pixbuf-pixdata to convert it to a GdkPixdata blob, verifying the GdkPixbuf loader for image/webp can decode the file.
CVE-2016-9085 libwebp regression Port / libwebp / cve-2016-9085 Passed
Asserts that cwebp rejects an input whose width and height arithmetic would push width*height*4 past 2^32 instead of producing the wrap-around buffer that triggered the 0.5.2 hardening wave.
CVE-2020-36332 libwebp regression Port / libwebp / cve-2020-36332 Passed
Asserts that dwebp rejects a malformed lossless WebP whose VP8L header declares an unreasonable Huffman group count without entering the historical excessive-allocation path.