Jump to content

WebP

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by PieterDeBruijn (talk | contribs) at 09:08, 15 March 2015 (New release). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

WebP
Filename extension
.webp[1]
Internet media type
image/webp (unofficial)
Magic numberWEBP
Developed byGoogle
Initial release30 September 2010; 13 years ago (2010-09-30)[2]
Latest release
0.4.3
12 March 2015; 9 years ago (2015-03-12)[3]
Type of formatImage format
Lossless/lossy compression algorithm
Contained byResource Interchange File Format (RIFF)[4]
Free 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 in 2010 as a new open standard for lossily 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]

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.[15] 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.

Technologie

Simple WebP
Bytes Content
 0- 3 R I F F
 4- 7 length+12
 8-11 W E B P
12-15 V P 8
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 (webpconv) 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 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.[13]

Support

Amongst web browsers, Google Chrome and Opera natively support WebP.[19][20] All WebM-compatible browsers can also display WebP via a JavaScript shim.[21][22] 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).[23]

Amongst graphics software, Picasa (from version 3.9),[24] PhotoLine,[25] Pixelmator,[26] ImageMagick,[27] Konvertor,[28] XnView,[29] IrfanView[30] and GDAL [31] all natively support WebP. Telegraphics has released a free plug-in that enables WebP support in Adobe Photoshop.[32] GIMP[33] and Paint.NET[34] support WebP via plugins. Google has also released a plug-in for Microsoft Windows that enables WebP support in Windows Photo Viewer, Microsoft Office 2010, FastPictureViewer,[35] and any other application that uses Windows Imaging Component.[36]

FFmpeg linked with 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.

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.[37] Android 4.0 supports encoding and decoding WebP images (via bitmap and Skia).[38] SDL_image supports the format since 1.2.11.

Below is a list software implementations that support WebP as of January 2013:

Software Typ Platform / description
Chrome Browser Win / OS X / Android / Linux / FreeBSD
Oper Browser Win / OS X / Android / Linux / FreeBSD / Mobile / Mini
Yandex Browser Win / OS X
Android Browser Browser Android > 4
Maxthon Browser Win
UC Browser Browser Symbian / Java / Android / BlackBerry
NetSurf Browser experimental - RISC OS - Amiga, Atari and other exotic
Safari Browser OS X - using plugin
Luna Browser Embedded device browser. Supported from version 1.8.0.
mod_pagespeed Apache module web server
ngx_pagespeed NGINX module web server
IISpeed IIS module web server
imageresizing.net IIS module web server
Picasa Website Fotografie
Google Image Search Website search engine
Google+ Website Social network
Gmail Website Email service
Torbit Website Optimizer service
WordPress Website Blog (plugin script)
Magento Website open source E-Commerce solution
Drupal Website CMS
Joomla Website CMS
odnoklassniki.ru Website Social network
Facebook Website Social network (upload only - using Easy Photo Uploader or FastPictureViewer)
Memecenter.com Website Meme creator and sharing site.
GNOME Desktop Environment (GNOME/GTK codec)
Chromium OS (libwebp)
Windows OS (Google WebP WIC Codec[36])
OS X OS (QuickTime codec)
iOS OS libwebp
Android OS (ndk)
Windows Photo Viewer image viewer (Google WebP WIC Codec[36])
Microsoft Office 2010 office suite (Google WebP WIC Codec[36])
Java Platform (ImageIo)
.NET Platform (GitHub/CodePlex imagewebp wrapper)
JavaScript Platform (WEBPJS)
Flash Platform (swf webp-plugin)
Python Sprache (pywebp)
Ruby Sprache (ruby-webp)
PHP Sprache (php 5.5 gd extension)
Google App Engine Cloud / Web platform
Picozu Web Image editor
Acorn Image editor
Photoshop Image editor (plugin)
Photopaint Image editor (plugin)
GIMP Image editor (plugin)
GraphicConverter Image editor
Paint.Net Image editor (plugin)
ImageMagick Image editor
PhotoLine Image editor
Pixelmator Image editor
RealWorld Paint Image editor
Graphviz Graph visualization
FileOptimizer Tool
PentaSuite PDF creation suite
FastPictureViewer Image viewer (Google WebP WIC Codec[36])
XnView Image viewer
IrfanView Image viewer
gThumb Image Viewer
Honeyview Image Viewer
Tautology Image Viewer Image Viewer
Konvertor Image converter
ReaConverter Image converter
Romeolight WebPconv Image converter Win
Cocos2d-X Game library - C++
SDL Library library
libwebp C/C++ Library
javavp8decoder Java library
javavp8encoder Java library
GDAL GIS
SimpleCV Machine vision library
OpenCV Machine vision library
WebKit Framework
OpenMAX IL 1.2 Multimedia Language/API Khronos specification
Cloudinary Image SaaS
Telegram Instant messaging system Android / Apple iOS / Windows Phone / MS Windows / Linux / OS X
Graphics Mill .NET library

Ongoing Implementations:

Software Typ Platform / description
Konqueror Browser (KDE)
Epiphany Browser (GNOME)
KDE Desktop Environment
MediaWiki Website (bug opened - a user script already implemented)

Restrictions

Like VP8 on which it is based, lossy WebP only supports 8-bit YUV 4:2:0 format,[39] which may cause color loss on images with thin contrast elements (such as in pixel art and computer graphics) and ghosting in anaglyph.

Criticism

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 psy[cho-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.[40] As WebP (and the WebM standard upon which it is based) is an open-source format[41] under active development, issues can be expected to both resolve and regress as they are addressed on an ad-hoc basis.[42]

In October 2013, Josh Aas from Mozilla Research published a comprehensive study of current lossy encoding techniques[43] and was not able to conclude WebP outperformed JPEG by any significant margin. Based on this, they concluded effort in adding support for WebP was better invested in an improved JPEG encoder, which they went on to publish.[44]

See also

  • JPEG, an image format used for lossy compression on the Web, which WebP lossy is comparable to
  • PNG, an image format used for lossless compression on the Web, which WebP lossless is comparable to
  • GIF, used for animated images on the Web, which animated WebP images are intended to replace
  • MNG and APNG, another animated image format, related to PNG
  • JPEG 2000, an improvement intended to replace the older JPEG by the JPEG committee, introduced in 2000
  • JPEG XR, an alternative to JPEG 2000 supporting HDR and wide gamut color spaces, introduced in 2009
  • 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

References

  1. ^ "WEBP file extension". DotWhat.net. Retrieved 2010-10-01.
  2. ^ a b c Rabbat, Richard (2010-09-30). "WebP, a new image format for the Web". Chromium Blog. Google. Retrieved 2010-10-01.
  3. ^ "libwebp 0.4.3". Chromium. Google. 11 March 2015. Retrieved 17 March 2015.
  4. ^ "RIFF Container". Google Code. Google. Retrieved 2010-10-01.
  5. ^ a b "WebP FAQs". Google Code. Google. Retrieved 2010-10-06.
  6. ^ Calore, Michael (2010-10-01). "Meet WebP, Google's New Image Format". Wired. Retrieved 2010-10-05.
  7. ^ Shankland, Stephen (2010-09-30). "Google offers JPEG alternative for faster Web". CNET News. CBS Interactive. Retrieved 2010-10-01.
  8. ^ Paul, Ryan (2010-10-02). "Google's new VP8-based image format could replace JPEG". Ars Technica. Retrieved 2010-10-05.
  9. ^ Rabbat, Richard (2010-10-03). "License/Patent clarification". Retrieved 2011-03-11.
  10. ^ "Comparative Study of WebP, JPEG and JPEG 2000". Google Code. Google. Retrieved 2010-10-01.
  11. ^ WebP-Mux (RIFF based container) framework
  12. ^ WebP v0.2.0 decoder and encoder source tree
  13. ^ a b Google Developers Blog: Lossless and Transparency Modes in WebP
  14. ^ Google Code blog: Lossless and transparency encoding in WebP
  15. ^ "Frequently Asked Questions". Google. 2014-02-21. Retrieved 2014-02-23.
  16. ^ a b c Glaser, Fiona (2010-09-30). "H.264 and VP8 for still image coding: WebP?". Diary Of An x264 Developer. Retrieved 2010-10-01.
  17. ^ a b c "VP8 Data Format and Decoding Guide" (PDF). Google. 2010-09-23. Retrieved 2010-10-02.
  18. ^ "WebP for .NET". Codeplex. Microsoft. 2010-10-01.
  19. ^ Metz, Cade (2010-09-30). "Google open sources JPEG assassin". The Register. San Francisco. Retrieved 2010-10-03.
  20. ^ Ødegaard, Ruarí (2011-03-15). "CSS gradients, WebP, and Declarative UI". Opera Desktop Team. Opera Software ASA. My Opera. Archived from the original on 2011-03-17. Retrieved 2011-03-15.
  21. ^ "Weppy Demo: WebP in modern browsers today". GitHub. Retrieved 2010-10-11.
  22. ^ "Weppy: Javascript Shim for WebP on Chrome 6 and Firefox 4.0". Blog: this title probably isn't very original. antimatter15.com. 2010-10-03. Retrieved 2011-05-24.
  23. ^ "WebPJS - Google's new image format WebP for not supported browsers (with alpha-channel)". Retrieved 2011-11-20.
  24. ^ Picasa and Picasa Web Albums Release Notes
  25. ^ "Release notes Version 18.00". pl32.com. Retrieved 2013-10-05.
  26. ^ David, Chartier (2010-10-04). "Pixelmator to Add Support for Google's WebP Image Format". PC World. IDG. Retrieved 2010-10-05.
  27. ^ "ImageMagick Image Formats". ImageMagick.org. ImageMagick Studio LLC. Retrieved 2011-05-24.
  28. ^ "Konvertor: Images Formats (v 4.06 Build 11)". Logipole. Retrieved 2011-05-23.
  29. ^ "XnView Software - All Supported Formats". xnview.com. Pierre-Emmanuel Gougelet. Retrieved 2014-01-06.
  30. ^ History of IrfanView changes
  31. ^ "GDAL supported formats". gdal.org. GDAL - Geospatial Data Abstraction Library. Retrieved 2011-11-30.
  32. ^ "WebP Format". Free plugins for Photoshop & Illustrator. Telegraphics. Retrieved 2011-05-23.
  33. ^ "GIMP Plugin Registry "WebP Import / Export" ". Retrieved 2012-01-10.
  34. ^ "WebP Filetype". Retrieved 2013-05-18.
  35. ^ FastPictureViewer Image Formats Compatibility
  36. ^ a b c d e "WebP Codec for Windows". WebP website. Google Code. Retrieved 2011-05-24.
  37. ^ "The Chromium Blog: WebP in Chrome, Picasa, Gmail With a Slew of New Features and Improvements". Google. 2011-05-21. Retrieved 2011-05-20.
  38. ^ Android 4.0 Platform Highlights
  39. ^ Google (2011-11). "VP8 Data Format and Decoding Guide". informational RFC 6386. IETF. Retrieved 2014-01-21. {{cite web}}: |author= has generic name (help); Check date values in: |date= (help)
  40. ^ "WebP Discussion". WebM Google Groups. Retrieved 2014-01-21.
  41. ^ "About WebM". WebM. Retrieved 2014-01-21.
  42. ^ "WebM Codec Developers Forum". WebM Google Groups. Retrieved 2014-01-21.
  43. ^ Josh Aas. "Studying Lossy Image Compression Efficiency". Mozilla Research Blog. Retrieved 2014-09-10.
  44. ^ Josh Aas. "Mozilla Advances JPEG Encoding with mozjpeg 2.0". Mozilla Research Blog. Retrieved 2014-09-10.