pingo 0.99 beta

Cédric Louvrier said on 02/22/2019

pingo 0.99 beta has an experimental PNG/JPG to WebP converter and WebP optimizer. it is very primitive implementation atm, in early development stage and barely tested. it is released with alternative modes which could not be always better and a naive but improved auto-lossy selection. thanks to report bugs here

-auto

this mode chooses automatically what lossy will be used for the WebP output. this can be used without any options, or with -auto=N (N = quality factor)

:: convert file.png to WebP (auto-lossy)
pingo -webp file.png
pajarito7.png
tool version options time dssim butteraugli in out
cwebp 9cf9841 -mt 0.07s 0.00124641 5.450849 56.45 KB 18.01 KB
cwebp 9cf9841 -mt -q 100 0.08s 0.00037648 4.475920 56.45 KB 36.39 KB
cwebp 9cf9841 -mt -near_lossless 50 0.35s 0.00002878 1.514932 56.45 KB 29.87 KB
cwebp 9cf9841 -mt -near_lossless 1 0.35s 0.00012375 2.009474 56.45 KB 22.80 KB
pingo 0.99 beta 16 -webp 0.17s 0.00000951 2.142229 56.45 KB 23.14 KB
big-capture.png
tool version options time dssim butteraugli in out
cwebp 9cf9841 -mt 0.20s 0.00081130 2.882838 152.56 KB 169.41 KB
cwebp 9cf9841 -mt -q 100 0.23s 0.00004111 2.144726 152.56 KB 297.08 KB
cwebp 9cf9841 -mt -near_lossless 50 0.35s 0.00002701 0.893930 152.56 KB 25.47 KB
cwebp 9cf9841 -mt -near_lossless 1 0.23s 0.00034892 3.110557 152.56 KB 24.57 KB
pingo 0.99 beta 16 -webp 0.41s - 1.915263 152.56 KB 22.47 KB
JPG to WebP
JPG CMYK pingo -webp (WebP)
714.47 KB 44.28 KB
auto-rotation
orientation 5 pingo -webp (WebP)
4 454 Bytes 484 Bytes

-webp-lossless

PNG to WebP

:: convert file.png to WebP (lossless)
pingo -webp-lossless -sN file.png
tweet-lib.png
tool version options time in out
cwebp 9cf9841 -mt -lossless 0.33s 35.86 KB 30.73 KB
pingo 0.99 beta 1 -webp-lossless 0.08s 35.86 KB 15.20 KB
flower-lib.png
tool version options time in out
cwebp 9cf9841 -mt -lossless 1.11s 594.53 KB 466.49 KB
pingo 0.99 beta 1 -webp-lossless 0.85s 594.53 KB 285.55 KB
box.png
tool version options time in out
cwebp 9cf9841 -mt -lossless 0.02s 35.52 KB 18.96 KB
cwebp 9cf9841 -mt -lossless -m 6 -q 100 0.57s 35.52 KB 18.50 KB
pingo 0.99 beta 1 -webp-lossless -s1 0.05s 35.52 KB 16.55 KB
pingo 0.99 beta 1 -webp-lossless -s4 0.06s 35.52 KB 15.46 KB
pingo 0.99 beta 1 -webp-lossless -s9 0.11s 35.52 KB 14.62 KB
firemin.png
tool version options time in out
cwebp 9cf9841 -mt -lossless 0.02s 40.36 KB 16.03 KB
cwebp 9cf9841 -mt -lossless -m 6 -q 100 0.42s 40.36 KB 15.54 KB
pingo 0.99 beta 1 -webp-lossless -s1 0.05s 40.36 KB 14.88 KB
pingo 0.99 beta 1 -webp-lossless -s4 0.06s 40.36 KB 14.57 KB
pingo 0.99 beta 1 -webp-lossless -s9 0.09s 40.36 KB 14.35 KB
lime.png
tool version options time in out
cwebp 9cf9841 -mt -lossless 0.04s 46.52 KB 25.27 KB
cwebp 9cf9841 -mt -lossless -m 6 -q 100 1.19s 46.52 KB 24.39 KB
pingo 0.99 beta 1 -webp-lossless -s1 0.08s 46.52 KB 20.90 KB
pingo 0.99 beta 1 -webp-lossless -s4 0.08s 46.52 KB 19.96 KB
pingo 0.99 beta 1 -webp-lossless -s9 0.16s 46.52 KB 18.98 KB
ZephyrPrime_Keyart.png
tool version options time in out
cwebp 9cf9841 -mt -lossless 1.39s 867.57 KB 803.62 KB
cwebp 9cf9841 -mt -lossless -m 6 -q 100 13.76s 867.57 KB 788.06 KB
pingo 0.99 beta 18 -webp-lossless -s1 1.25s 867.57 KB 697.76 KB
pingo 0.99 beta 18 -webp-lossless -s4 3.22s 867.57 KB 672.82 KB
pingo 0.99 beta 18 -webp-lossless -s9 3.91s 867.57 KB 672.82 KB
books1.png
tool version options time in out
cwebp 9cf9841 -mt -lossless 0.17s 92.25 KB 74.08 KB
cwebp 9cf9841 -mt -lossless -m 6 -q 100 1.15s 92.25 KB 72.28 KB
pingo 0.99 beta 1 -webp-lossless -s1 0.16s 92.25 KB 67.68 KB
pingo 0.99 beta 1 -webp-lossless -s4 0.30s 92.25 KB 64.76 KB
pingo 0.99 beta 1 -webp-lossless -s9 0.51s 92.25 KB 64.76 KB

WebP Optimizer

:: optimize file.webp (lossless)
pingo -sN file.webp
oscreen.webp
tool version options time in out
cwebp 9cf9841 -mt -lossless 0.35s 133.55 KB 134.04 KB
cwebp 9cf9841 -mt -lossless -m 5 -q 100 0.70s 133.55 KB 133.55 KB
pingo beta 1 -s0 0.32s 133.55 KB 77.86 KB
oserver.webp
tool version options time in out
cwebp 9cf9841 -mt -lossless -m 6 -q 100 1.05s 42.41 KB 42.41 KB
pingo beta 1 -s4 0.36s 42.41 KB 36.96 KB

trials

0.99 beta could use more trials with palette if max trials+profile is set during PNG to WebP conversion. this could affect processing time with no guarantee about results — profiles could not be very well balanced yet

0.99 beta 18 (paletted PNG) — 380 files paletted — FX-4100 @ 3.6 Ghz - 8 Go RAM - 64-bit (64-bit binaries)
tool version options saved time
pingo 0.99 beta 18 -webp-lossless -s0 680.01 KB 1.56 s
cwebp d9a662e -mt -lossless 680.01 KB 5.41 s
pingo 0.99 beta 18 -webp-lossless -s1 681.67 KB 2.27 s
pingo 0.99 beta 18 -webp-lossless -s6 688.24 KB 3.40 s
cwebp d9a662e -mt -lossless -m 6 -q 100 688.34 KB 159.52 s
pingo 0.99 beta 18 -webp-lossless -s9 693.44 KB 4.19 s
pingo 0.99 beta 18 -webp-lossless -sa 700.13 KB 5.85 s

-webp-lossy

basically the WebP default lossy with different settings

:: convert file.png to WebP (lossy)
pingo -webp-lossy=N -sN file.png

-webp-color

this is a near-lossless alternative mode. it is probably not very effective on pics, but could be efficient (quality, speed, size) on some RGBA samples

:: convert file.png to WebP (alternative lossy)
pingo -webp-color=N -sN file.png
imac.png
tool version options time dssim butteraugli in out
cwebp 9cf9841 -mt -near_lossless 1 0.60s 0.00058833 4.115334 223.27 KB 122.21 KB
pingo 0.99 beta 1 -webp-color 0.45s 0.00014173 1.052796 223.27 KB 113.71 KB
tweet.png
tool version options time dssim butteraugli in out
cwebp 9cf9841 -mt -q 100 0.06s 0.00146015 8.462865 70.17 KB 20.84 KB
cwebp 9cf9841 -mt -near_lossless 90 0.22s 0.00003277 0.768917 70.17 KB 34.40 KB
cwebp 9cf9841 -mt -near_lossless 50 0.23s 0.00011050 1.735309 70.17 KB 27.75 KB
cwebp 9cf9841 -mt -near_lossless 1 0.21s 0.00062167 3.173888 70.17 KB 24.05 KB
pingo 0.99 beta 1 -webp-color=60 0.24s 0.00012928 1.196671 70.17 KB 30.16 KB
pingo 0.99 beta 1 -webp-color 0.21s 0.00007390 0.694347 70.17 KB 30.30 KB
pingo 0.99 beta 1 -webp-color=80 0.18s 0.00007316 0.694347 70.17 KB 30.79 KB
pingo 0.99 beta 1 -webp-color=90 0.17s 0.00003153 0.607343 70.17 KB 36.21 KB
pingo 0.99 beta 1 -webp-color=100 0.17s 0.00003021 0.478465 70.17 KB 36.72 KB

-webp-filter

another near-lossless alternative mode. this should be globally less effective because it does not benefit from all WebP transformations

:: convert file.png to WebP (alternative lossy)
pingo -webp-filter=N -sN file.png
apple.png
tool version options time dssim butteraugli in out
cwebp 9cf9841 -mt -near_lossless 1 0.49s 0.00024198 6.910768 252.57 KB 102.71 KB
cwebp 9cf9841 -mt -q 100 0.11s 0.00031453 2.752150 252.57 KB 49.97 KB
pingo 0.99 beta 1 -webp-filter 0.27s 0.00020492 1.289866 252.57 KB 78.34 KB
pingo 0.99 beta 1 -webp-filter=50 0.26s 0.00059149 1.956066 252.57 KB 58.33 KB

-webp-palette

this converts image to paletted encoding for WebP. good for small flat images, simple graphics etc. but has limitations to 256 colors max

:: convert file.png to WebP (alternative lossy)
pingo -webp-palette=N -sN file.png
cat.png
tool version options time dssim butteraugli in out
cwebp 9cf9841 -mt -near_lossless 1 0.50s 0.00071540 3.391516 40.06 KB 20.81 KB
pingo 0.99 beta 1 -webp-palette 0.13s 0.00003850 1.830648 40.06 KB 16.41 KB

-text

a very aggressive preset that optimizes JPG/PNG scans (text images). this could try to remove artifacts according to image data specs

:: convert file.jpg to WebP (alternative lossy)
pingo -webp -text file.jpg
lorem.jpg
tool version options time in out
cwebp 9cf9841 -mt -preset text -m 6 0.13s 52.07 KB 37.45 KB
cwebp 9cf9841 -mt -preset text -q 1 -m 6 0.10s 52.07 KB 12.72 KB
pingo 0.99 beta 13 -webp -text 0.13s 52.07 KB 9.54 KB

WebP ICC handling

pingo 0.99 beta 21 should handle ICC data like this

mode action what is done ICC data (output)
lossless PNG to WebP iCCP chunk conversion yes
lossless WebP to WebP ICC data copy yes
lossy PNG to WebP image data conversion no
lossy WebP to WebP ICC data copy yes

PNG to WebP (lossless)

ICC profile (from PNG to WebP)
PNG WebP
187.32 KB (iCCP) 133.68 KB (ICC)
:: example
pingo -webp-lossless -s0 <targets>

WebP (lossless)

ICC profile (WebP)
WebP WebP
207.46 KB (ICC) 133.76 KB (ICC)
:: example
pingo -s4 <targets>

PNG to WebP (lossy)

ICC profile (from PNG to WebP)
PNG WebP
187.32 KB (iCCP) 66.16 KB (no ICC)
:: example
pingo -webp-lossy=100 <targets>

JPG to WebP (lossy)

ICC profile (from JPG to WebP)
JPG WebP
48.99 KB (ICC) 31.11 KB (no ICC)
:: example
pingo -webp=85 <targets>

Javi said on 02/27/2019

Hi,

Pingo crashes if you try to process this image:

test.jpg

pingo -jpgquality=90 test.jpg

Cédric Louvrier said on 02/27/2019

should be fixed in 0.99 beta 8, thanks

Pingo Fan said on 03/11/2019

Thanks for the great app, and just after I had written my own png to webp script :-p ... two requests:

  • Please add webp lossless pre-processing, this is a major space saver - and just about what some external png pre-processors do
  • It would be very nice if you'd provide a x86 32-bit build, at least when pingo is final. Believe it or not, I'm running 32bit Windows on my old laptop and still do some web design and image conversion while on the road :-o

Cédric Louvrier said on 03/11/2019

webp lossless pre-processing, this is a major space saver

[edit: added examples] — if you mean near-lossless, this can be done using -webp-near=N. also, you could try an alternative way using -webp-color=N

alternative near-lossless
pidgin.png
tool version options time dssim butteraugli in out
cwebp 9cf9841 -mt -near_lossless 80 0.45s 0.00001539 1.032383 123.27 KB 88.14 KB
cwebp 9cf9841 -mt -near_lossless 50 0.48s 0.00004413 2.670845 123.27 KB 82.98 KB
pingo 0.99 beta 21 -webp-color=90 0.32s 0.00005271 0.965070 123.27 KB 81.88 KB
cwebp 9cf9841 -mt -near_lossless 10 0.46s 0.00018658 4.236771 123.27 KB 79.93 KB
pingo 0.99 beta 21 -webp-color=80 0.31s 0.00013397 1.507427 123.27 KB 71.68 KB

note: this alternative way is not always good, but should be nice enought to be considered on RGBA samples like this. more examples: efficient by speed, size and quality estimation on 12x512rgba samples

alternative near-lossless
12x512rgba
tool version options time dssim (total) butteraugli (total) saved
pingo 0.99 beta 21 -webp-near 3.27s 0.00278520 30.140599 1652.98 KB - (56.50%)
pingo 0.99 beta 21 -webp-color 2.39s 0.00129194 13.139764 1689.38 KB - (57.74%)
pingo 0.99 beta 21 -webp-filter 1.96s 0.00286698 17.316001 1819.13 KB - (62.17%)

Pingo Fan said on 03/12/2019

Thanks, I didn't see -webp-color when browsing for near, sorry, my bad - but it makes sense there's the -webp-near alias.

This just leaves a x86 compile, which would be invaluable for Windows-on-ARM, too :-)

comment this