Generation Loss – JPEG, WebP, JPEG XL, AVIF

Опубликовано: 01 Октябрь 2024
на канале: Jon Sneyers
2,119
46

Tested with
- JPEG: stock Ubuntu ImageMagick + libjpeg-turbo
- WebP: version 1.1.0
- JPEG XL: current dev version (2020-11-13)
- AVIF: libavif 0.8.2 (aom 2.0.0)

I used the following script to create this video:

#!/bin/bash

cp image.png image_avif_0.png
cp image.png image_jxl_0.png
cp image.png image_webp_0.png
cp image.png image_jpeg_0.png

for f in $(seq 1 1000)
do

./avifenc -c aom -y 420 --min 0 --max 63 -s 5 -j 4 -a end-usage=q -a tune=ssim -a cq-level=$((f % 2 ? 11 : 10)) image_avif_$((f-1)).png image_avif_$f.avif
./avifdec image_avif_$f.avif image_avif_$f.png

../tools/cjxl image_jxl_$((f-1)).png image_jxl_$f.jxl -q $((f % 2 ? 88 : 90))
../tools/djxl image_jxl_$f.jxl image_jxl_$f.png

convert image_jpeg_$((f-1)).png -quality $((f % 2 ? 83 : 85 )) image_jpeg_$f.jpg
convert image_jpeg_$f.jpg image_jpeg_$f.png

cwebp image_webp_$((f-1)).png -q $((f % 2 ? 89 : 92)) -m 6 -o image_webp_$f.webp
dwebp image_webp_$f.webp -o image_webp_$f.png

convert -crop 480x880+0+0 -gravity center image_jpeg_$f.png a.png
convert -crop 480x880+0+0 -gravity center image_webp_$f.png b.png
convert -crop 480x880+0+0 -gravity center image_jxl_$f.png c.png
convert -crop 480x880+0+0 -gravity center image_avif_$f.png d.png
convert -size 480x100 -gravity center label:"JPEG\n$(stat -c "%s" image_jpeg_$f.jpg) bytes" aa.png
convert -size 480x100 -gravity center label:"WebP\n$(stat -c "%s" image_webp_$f.webp) bytes" ab.png
convert -size 480x100 -gravity center label:"JXL\n$(stat -c "%s" image_jxl_$f.jxl) bytes" ac.png
convert -size 480x100 -gravity center label:"AVIF\n$(stat -c "%s" image_avif_$f.avif) bytes" ad.png
convert -size 1920x100 -gravity center label:"$f generations" caption.png
convert +append a.png b.png c.png d.png e.png
convert +append aa.png ab.png ac.png ad.png ae.png
convert -append ae.png caption.png caption.png
convert -append e.png caption.png frame-$f.png

done

ffmpeg -i frame-%d.png -pix_fmt yuv420p -crf 2 GL.mp4