WebP

From Wikipedia, the free encyclopedia
  (Redirected from Webp)
Jump to navigation Jump to search

logo
FFMpeg libwebp.png
libwebp implementation
Filename extension.webp[1]
Internet media typeimage/webp
Magic numberWEBP
Developed byGoogle
Initial release30 September 2010; 8 years ago (2010-09-30)[2]
Latest release
1.0.3
(4 July 2019; 45 days ago (2019-07-04)[3])
Type of format
Contained byResource Interchange File Format (RIFF)[4]
Open format?Yes[5]
Websitedevelopers.google.com/speed/webp

WebP is an image format employing both lossy[6] and lossless compression. It is currently developed by Google, based on technology acquired with the purchase of On2 Technologies.[7]

As a derivative of the VP8 video format, it is a sister project to the WebM multimedia container format.[8] WebP-related software is released under a BSD license.[9]

The format was first announced on September 30, 2010 as a new open standard for lossy compressed true-color graphics on the web, producing smaller files of comparable image quality to the older JPEG scheme.[10] On October 3, 2011, Google announced WebP support for animation, ICC profile, XMP metadata, and tiling (compositing very large images from maximum 16384×16384 tiles).[11]

On November 18, 2011, Google began to experiment with lossless compression and support for transparency (alpha channel) in both lossless and lossy modes; support has been enabled by default in libwebp 0.2.0 (August 16, 2012).[12][13] According to Google's measurements, a conversion from PNG to WebP results in a 45% reduction in file size when starting with PNGs found on the web, and a 28% reduction compared to PNGs that are recompressed with pngcrush and PNGOUT.[14]

Technology[edit]

Simple WebP
Bytes Content
 0- 3 R I F F
 4- 7 length+8
 8-11 W E B P
12-15 V P 8 [15]
16-19 length (padded)
20- … VP8 key frame
pad (even length)

WebP's lossy compression algorithm is based on the intra-frame coding of the VP8 video format[16] and the Resource Interchange File Format (RIFF) as a container format.[2] As such, it is a block-based transformation scheme with eight bits of color depth and a luminance-chrominance model with chroma subsampling by a ratio of 1:2 (YCbCr 4:2:0).[17] Without further content, the mandatory RIFF container has an overhead of only twenty bytes, though it can also hold additional metadata.[2] The side length of WebP images is limited to 16383 pixels.[5]

WebP is based on block prediction. Each block is predicted on the values from the three blocks above it and from one block to the left of it (block decoding is done in raster-scan order: left to right and top to bottom). There are four basic modes of block prediction: horizontal, vertical, DC (one color), and TrueMotion. Mispredicted data and non-predicted blocks are compressed in a 4×4 pixel sub-block with a discrete cosine transform or a Walsh–Hadamard transform. Both transforms are done with fixed-point arithmetic to avoid rounding errors. The output is compressed with entropy encoding.[17] WebP also has explicit support for parallel decoding.[17]

The reference implementation consists of converter software in the form of a command-line program for Linux (cwebp) and a programming library for the decoding, the same as for WebM. The open source community quickly managed to port the converter to other platforms, such as Windows.[18]

WebP’s lossless compression, a new format unrelated to VP8, was designed by Google software engineer Jyrki Alakuijala. It uses advanced techniques such as dedicated entropy codes for different color channels, exploiting 2D locality of backward reference distances and a color cache of recently used colors. This complements basic techniques such as dictionary coding, Huffman coding and color indexing transform.[12] This format uses recursive definition: all of the control images such as the local entropy code selection are encoded the same way as the whole image itself.[19]

Animation[edit]

Google has proposed using WebP for animated images as an alternative to the popular GIF format, citing the advantages of 24-bit color with transparency, combining frames with lossy and lossless compression in the same animation, and as well as support for seeking to specific frames.[20] Google reports a 64% reduction in file size for images converted from animated GIFs to lossy WebP, and a 19% reduction when converted to lossless WebP.

Support[edit]

An example WebP image

Amongst web browsers, Google Chrome, Firefox[21], Opera, GNOME Web, Midori, Falkon, Pale Moon,[22] and Waterfox[23] natively support WebP. Microsoft Edge supports WebP through a platform extension (installed by default). Microsoft Edge doesn’t support platform extensions, including the WebP image format extension, when running in the security hardened “Application Guard” mode.[24]

WebP can also be displayed in all major browsers using the WebPJS JavaScript library, although support in Internet Explorer 6 and above is achieved using Flash.[25]

Amongst graphics software, Picasa (from version 3.9),[26] PhotoLine,[27] Pixelmator,[28] ImageMagick,[29] XnView,[30] IrfanView,[31] GDAL,[32] Aseprite[33] and GIMP (from version 2.10)[34] all natively support WebP. In 2019, Google released a free plug-in that enables WebP support in Adobe Photoshop.[35] Before that, free Photoshop plug-ins were released by Telegraphics and fnordware.[36][37] Imagine[38] and Paint.NET[39] support WebP via plugins. GIMP up to version 2.8 also supported WebP via a plugin,[40] later this plugin was shipped in GIMP 2.9 branch, and received multiple improvements.[41] Google has also released a plug-in for Microsoft Windows [42] that enables WebP support in Windows Photo Viewer, Microsoft Office 2010, FastPictureViewer,[43] and any other application that uses Windows Imaging Component.[44]

FFmpeg linked with the VP8/VP9 reference codec library libvpx can extract VP8 key frames from WebM media and a script can then add the WebP RIFF header and the NUL pad byte for odd frame lengths. Meanwhile, FFmpeg supports libwebp directly.

Gmail and Picasa Web Albums (both Google web applications) support WebP. Support for WebP is also planned for Google App Engine. The Instant Previews feature of Google Search currently uses WebP internally to reduce disk space used by previews.[45] Android 4.0 supports encoding and decoding WebP images (via bitmap and Skia).[46] SDL_image supports the format since 1.2.11.

Telegram Messenger uses WebP for their Stickers, claiming they are displayed 5 times faster compared to the other formats usually used in messaging apps.[47]

In early beta versions of macOS Sierra and iOS 10, Apple added WebP support.[48] In the GM seed versions of iOS 10 and macOS Sierra released 7 September 2016, WebP support has been removed.

CMS (Content Management Systems) usually do not support WebP natively or by default. However, for most popular CMS, extensions are available for automated conversion from other image formats to WebP and delivering WebP images to compatible browsers.

Restrictions[edit]

Like VP8 on which it is based, former lossy WebP only supports 8-bit YUV 4:2:0 format,[49] which may cause color loss on images with thin contrast elements (such as in pixel art and computer graphics) and ghosting in anaglyph. To overcome this restriction, new lossless WebP supports VP8L encoding that works exclusively with 8-bit ARGB color space.[50][51]

Promotion[edit]

Google actively promotes WebP. The proprietary PageSpeed Insights tool suggests that webmasters switch from JPEG and PNG to WebP in order to improve their website speed score.

To pass this audit, encode all of these images in WebP.

Criticism[edit]

In September 2010, Fiona Glaser, a developer of the x264 encoder, wrote a very early critique of WebP.[16] Comparing different encodings (JPEG, x264, and WebP) of a reference image, she stated that the quality of the WebP-encoded result was the worst of the three, mostly because of blurriness on the image. Her main remark was that "libvpx, a much more powerful encoder than ffmpeg's jpeg encoder, loses because it tries too hard to optimize for PSNR" (peak signal-to-noise ratio), arguing instead that "good psycho-visual optimizations are more important than anything else for compression."[16]

Pascal Massimino, developer of the cwebp encoder, reports improvements to the WebP encoder with a number of defects resolved since the preview releases.[citation needed]

In October 2013, Josh Aas from Mozilla Research published a comprehensive study of current lossy encoding techniques[53] and was not able to conclude WebP outperformed JPEG by any significant margin.[54]

See also[edit]

  • FLIF, a work-in-progress lossless image format which claims to outperform PNG, lossless WebP, lossless BPG and lossless JPEG2000 in terms of compression ratio, introduced in 2015
  • BPG, an image format intended to be a more compression-efficient replacement for the JPEG image format, based on the intra-frame encoding of the High Efficiency Video Coding (HEVC) video compression standard, introduced in 2014
  • HEIF, another image format based on HEVC
  • JPEG XR, an alternative to JPEG 2000 supporting HDR and wide gamut color spaces, introduced in 2009
  • JPEG 2000, an improvement intended to replace the older JPEG by the JPEG committee, introduced in 2000
  • MNG and APNG, PNG-based animated image formats, supporting lossless 24-bit RGB color and 8-bit alpha channel
  • AV1 Still Image File Format, a container format based on the AV1 video codec[55]

References[edit]

  1. ^ "WEBP file extension". DotWhat.net. Retrieved 1 October 2010.
  2. ^ a b c Rabbat, Richard (30 September 2010). "WebP, a new image format for the Web". Chromium Blog. Retrieved 1 October 2010.
  3. ^ Zern, James (4 July 2019). "libwebp 1.0.3". Chromium. Retrieved 21 July 2019.
  4. ^ "RIFF Container". Google Code. Retrieved 1 October 2010.
  5. ^ a b "WebP FAQs". Google Code. Retrieved 6 October 2010.
  6. ^ Calore, Michael (1 October 2010). "Meet WebP, Google's New Image Format". Wired. Retrieved 5 October 2010.
  7. ^ Shankland, Stephen (30 September 2010). "Google Offers JPEG Alternative for Faster Web". CNET News. CBS Interactive. Retrieved 1 October 2010.
  8. ^ Paul, Ryan (2 October 2010). "Google's New VP8-Based Image Format Could Replace JPEG". Ars Technica. Condé Nast. Retrieved 5 October 2010.
  9. ^ Rabbat, Richard (3 October 2010). "License/Patent clarification". Google Groups. Retrieved 11 March 2011.
  10. ^ "Comparative Study of WebP, JPEG and JPEG 2000". Google Code. Archived from the original on 4 October 2010. Retrieved 1 October 2010.
  11. ^ Arora, Vikas (3 October 2011). "WebP-Mux (RIFF based container) framework". Google Groups. Retrieved 18 November 2011.
  12. ^ a b Alakuijala, Jyrki (30 August 2012). "Lossless and Transparency Modes in WebP". Google Developers Blog. Retrieved 6 September 2012.
  13. ^ Zern, James (16 August 2012). "Version 0.2.0". Chromium. Retrieved 6 January 2017.
  14. ^ Alakuijala, Jyrki; Arora, Vikas; Joshi, Urvang (18 November 2011). "Lossless and Transparency Encoding in WebP". Google Code Blog. Retrieved 18 November 2011.
  15. ^ WebP Container Specification: U+0020 for lossy images, and "L" for lossless images.
  16. ^ a b c Glaser, Fiona (30 September 2010). "H.264 and VP8 for still image coding: WebP?". Diary Of An x264 Developer. Archived from the original on 19 March 2015. Retrieved 1 October 2010.
  17. ^ a b c "VP8 Data Format and Decoding Guide" (PDF). 23 September 2010. Retrieved 2 October 2010.[permanent dead link]
  18. ^ "WebP for .NET". Codeplex. Microsoft. 1 October 2010.
  19. ^ Jyrki Alakuijala (16 September 2014). "WebP Lossless Bitstream Specification". Google.
  20. ^ "Frequently Asked Questions". 21 February 2014. Retrieved 23 February 2014.
  21. ^ "Firefox 65 Release Note".
  22. ^ Moonchild. "Pale Moon - Release Notes for Archived Versions". www.palemoon.org. Retrieved 19 November 2018.
  23. ^ Kontos, Alex. "Waterfox 54.0.1 Release (Windows, Mac & Linux)". Waterfox 54.0.1 Release (Windows, Mac & Linux). Retrieved 19 November 2018.
  24. ^ "WebP images won't load in Microsoft Edge with Application Guard". Retrieved 14 November 2018.
  25. ^ "WebPJS - Google's new image format WebP for not supported browsers (with alpha-channel)". Retrieved 20 November 2011.
  26. ^ Picasa and Picasa Web Albums Release Notes
  27. ^ "Release notes Version 18.00". pl32.com. Retrieved 5 October 2013.
  28. ^ David, Chartier (4 October 2010). "Pixelmator to Add Support for Google's WebP Image Format". PC World. IDG. Retrieved 5 October 2010.
  29. ^ "ImageMagick Image Formats". ImageMagick.org. ImageMagick Studio LLC. Retrieved 24 May 2011.
  30. ^ "XnView Software - All Supported Formats". xnview.com. Pierre-Emmanuel Gougelet. Retrieved 6 January 2014.
  31. ^ History of IrfanView changes
  32. ^ "GDAL supported formats". gdal.org. GDAL - Geospatial Data Abstraction Library. Retrieved 30 November 2011.
  33. ^ "Aseprite - Release-notes". www.aseprite.org. Retrieved 28 March 2016.
  34. ^ "GIMP 2.10 Release Notes". www.gimp.org. Retrieved 2 May 2018.
  35. ^ "WebPShop". Photoshop plug-in for opening and saving WebP images. Google. Retrieved 15 July 2019.
  36. ^ "WebP Format". Free plugins for Photoshop & Illustrator. Telegraphics. Retrieved 23 May 2011.
  37. ^ "Adobe WebM/WebP plugins". fnordware.com. Retrieved 29 June 2015.
  38. ^ Sejin Chun. "Imagine: Freeware Image & Animation Viewer for Windows". Retrieved 2 May 2018.
  39. ^ "WebP Filetype". Retrieved 18 May 2013.
  40. ^ "nathan-osman/gimp-webp: Gimp plugin for loading and saving WebP images". Retrieved 30 March 2016.
  41. ^ "GIMP 2.9.6 Released". www.gimp.org. Retrieved 24 May 2018.
  42. ^ WebP Codec Installer for Windows 0.19
  43. ^ FastPictureViewer Image Formats Compatibility
  44. ^ "WebP Codec for Windows". WebP website. Google Code. Archived from the original on 5 May 2012. Retrieved 24 May 2011.
  45. ^ "The Chromium Blog: WebP in Chrome, Picasa, Gmail With a Slew of New Features and Improvements". 21 May 2011. Retrieved 20 May 2011.
  46. ^ Android 4.0 Platform Highlights
  47. ^ "Stickers Done Right"
  48. ^ Stephen Shankland (19 July 2016). "Apple tests Google graphics format to speed up websites". CNET. Retrieved 20 July 2016.
  49. ^ Google (November 2011). "Format Overview". VP8 Data Format and Decoding Guide. IETF. sec. 2. doi:10.17487/RFC6386. RFC 6386. Retrieved 21 January 2014.
  50. ^ "Frequently Asked Questions".
  51. ^ "WebP Lossless Bitstream Specification".
  52. ^ "Serve Images in Next-Gen Formats".
  53. ^ Josh Aas. "Studying Lossy Image Compression Efficiency". Mozilla Research Blog. Retrieved 10 September 2014.
  54. ^ Josh Aas. "Mozilla Advances JPEG Encoding with mozjpeg 2.0". Mozilla Research Blog. Retrieved 10 September 2014.
  55. ^ "AV1 Still Image File Format (AVIF)". aomediacodec.github.io. Retrieved 10 October 2018.

External links[edit]