Bug 420449

Summary: add support for saving as (lossless) webp
Product: [Applications] Spectacle Reporter: Jos van den Oever <jos>
Component: GeneralAssignee: Boudhayan Gupta <me>
Status: RESOLVED FIXED    
Severity: wishlist CC: kde
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Jos van den Oever 2020-04-23 09:23:55 UTC
SUMMARY

Files saved by spectacle can be quite large. Using oxipng or optipng can often shave 30% of the size in a fraction of a second.

oxipng /tmp/Screenshot_20200423_111228.png
Processing: /tmp/Screenshot_20200423_111228.png
    1411x1217 pixels, PNG format
    4x8 bits/pixel, RGBA
    IDAT size = 285460 bytes
    File size = 285946 bytes
Trying: 8 combinations
Found better combination:
    zc = 9  zs = 0  f = 0        203982 bytes
    IDAT size = 203982 bytes (81478 bytes decrease)
    file size = 204060 bytes (81886 bytes = 28.64% decrease)
Output: /tmp/Screenshot_20200423_111228.png


Even more space can be saved by saving as lossless webp. Webp is supported in all new browsers. Making it the default is perhaps a bit early, but it would be nice if spectable would remember the preference for webp.

STEPS TO REPRODUCE

$ cwebp -lossless /tmp/Screenshot_20200423_111228.png -o /tmp/Screenshot_20200423_111228.webp
Saving file '/tmp/Screenshot_20200423_111228.webp'
File:      /tmp/Screenshot_20200423_111228.png
Dimension: 1411 x 1217
Output:    92618 bytes (0.43 bpp)
Lossless-ARGB compressed size: 92618 bytes
  * Header size: 2129 bytes, image data size: 90463
  * Lossless features used: SUBTRACT-GREEN
  * Precision Bits: histogram=5 transform=5 cache=10

OBSERVED RESULT

$ ls -l /tmp/Screenshot_20200423_111228.*
285946 23 apr 11:12 /tmp/Screenshot_20200423_111228.png
 92618 23 apr 11:13 /tmp/Screenshot_20200423_111228.web


SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 19.12
(available in About System)
KDE Plasma Version:  19.12
KDE Frameworks Version: 5.66
Qt Version: 5.12.7

ADDITIONAL INFORMATION
Comment 1 David Redondo 2020-04-23 09:31:51 UTC
Spectacle can save in all file formats supported by QImageWriter. In fact on my machine I can select webp as file format resulting in 100 KiB 1920x1080 screenshots.
Comment 2 Jos van den Oever 2020-04-23 09:56:00 UTC
That's great to hear. I've plugins/imageformats/libqwebp.so on my machine but do not see an option to save to webp or set it as a default format.

Is there an option to save losslessly? webp can save lossy and losslessly and often for screenshots the lossless version is smaller as well as more accurate.
Comment 3 Jos van den Oever 2020-04-24 18:56:45 UTC
After installing the Qt image plugins, spectacle can save as webp. Very nice!

When I save images with webp 100% quality the files are much smaller than when saving with 99% quality.

E.g. a screenshot of a browser is 366K when saving at 99% quality and 197K when saving at 100% quality.
Comment 4 Christoph Feck 2020-04-25 11:13:06 UTC
The quality setting in Qt image plugins controls compression, and with WebP, 100 forces lossless mode

https://code.qt.io/cgit/qt/qtimageformats.git/tree/src/plugins/imageformats/webp/qwebphandler.cpp#n274