WebP处理

WebP achieves better compression rates by being more complex. The cost of this complexity is that it's slower, particularly at encoding.

"Therefore, it's not usually advisable to convert images to WebP on the fly. WebP files should be generated in advance." (@webmproject.org)

有关此图像格式的详细信息,请访问 Googles WebP Website 以及 WebP Discussion Group

更简单的代表性图示可在 Learn Images! WebP

Results based on the standard libraries and the ImageIO WebP extension

平铺大小 [pixel]

ImageIO PNG [ms]

ImageIO扩展WebP [ms]

LibWebP编码 [ms]

128

5

67

11.2

256

15

304

30.1

512

64

1034

91.4

1024

177

2089

440.5

2048

1068

8027

1595.9

Table 1 :比较不同瓦片大小和图像格式的处理时间。对于ImageIO映像,计算了1000个.write函数的平均值。使用 LibWebP ,计算了10遍的编码持续时间的平均值。对于WebP处理,使用默认设置(有损,Q=75)和版本1.0.0。 GeoserverRequest 对于图像(256*256)。

平铺大小 [pixel]

PNG原创

ImageIO PNG

ImageIO扩展WebP

LibWebP

128

14

13

5

5

256

64

60

25

25

512

223

204

106

106

1024

805

769

352

352

2048

2283

2171

1062

1062

Table 2 :不同磁贴大小和图像格式的大小比较(以KB为单位)(见上表)。

显然,由于编码时间的限制,WebP永远无法与PNG图像的性能匹敌。

然而,这并不能解释ImageIO WebP扩展的糟糕结果。不幸的是,原来的存储库不再可用,而主分支 webp_imageio 已经过时了,而且没有得到维护。Geoserver插件基于来自 GOTSON 。一个有希望的新纯Java实现是 TwelveMonkeysImageIO WebP ,但到目前为止只支持读访问。 Scrimage Webp 产生的结果大多更快,但不适合Geoserver ImageIO生态系统。谷歌自己为Android提供了 libwebp Java bindings

WebP支持无损压缩(图形)和有损压缩(照片)。默认设置为有损,压缩质量为75。

  • 有损压缩:较小的压缩质量因数(Q)会产生较小的文件,但质量较低(最佳质量Q=100)。
  • 无损压缩:较小的系数可实现更快的压缩速度,但会产生较大的文件(最大压缩Q=100)。

问:

无损 [ms]

无损 [kb]

Lossy [ms]

Lossy [kb]

0.0

48

57

18.6

25

0.1

48.8

57

19.5

26

0.2

48.7

57

19.7

27

0.3

82.6

45

20.4

27

0.4

84.6

45

20.6

28

0.5

85.6

45

20.8

29

0.6

89.1

45

20.8

29

0.7

93.9

45

21.2

30

0.8

99.3

45

21.4

32

0.9

99.3

45

22.5

36

1.0

1425

44

25.3

46

Table 3 :LibWebP编码时间和文件大小的有损/无损模式和压缩系数(Q)的比较。输入图像,见下文。计算了10个通道的编码持续时间的平均值。

问:

无损 [ms]

无损 [kb]

Lossy [ms]

Lossy [kb]

0.0

242

57

113

25

0.1

211

57

145

26

0.2

236

57

137

27

0.3

370

45

150

27

0.4

376

45

140

28

0.5

308

45

128

29

0.6

375

45

123

29

0.7

529

45

126

30

0.8

468

45

125

32

0.9

424

45

130

36

1.0

3106

44

184

46

Table 4 :比较ImageIO WebP扩展名的有损/无损模式和压缩系数(Q)。写入时间和文件大小。输入图像,见下文。计算了1000个.WRITE函数的平均值。

../../_images/lossy_lossless.png

Figure 1 :表3和表4中用于比较的输入图像(PNG 256*256 px,73kb)。

不幸的是,关于速度和大小的最佳结果并不是真正可用的(见下文)。

../../_images/libweb_lossy_0_0.png

Figure 2 :最佳结果的图像(有损,q=0)。

通常,默认值(有损,Q=0.75)是一个很好的选择。

有关ImageIO扩展的显著更长的持续时间不能仅用写入过程来解释(比较表3和表4)。

Processing time & energy consumption

处理时间的增加与能源消耗的增加相关。

在本地PC上用商用电能表测量一小时(多次)。

堆栈:

  • Windows10
  • Java 11
  • Tomcat9号
  • Chrome浏览器
  • OpenLayers客户端
  • 每0.5秒随机WMS GetMap请求

结果:

  • 巴布亚新几内亚0.067千瓦时
  • WebP 0.071千瓦时
  • 无请求0.047千瓦时

这也以一种弱化的方式适用于JPEG格式。

Browser rendering energy impact for different image formats

图像格式

能量冲击

WebP

0.4532

PNG

0.4545

PNG8

0.457

JPEG

0.4414

Table 5 :比较不同图片格式在Firefox中的渲染能耗。平均1000个WMS GetMap请求。

Firefox“Energy Impact”(关于进程页面)显示了CPU正在使用的处理能力。

尽管图像格式的文件大小不同,但看不到真正显著的差异。当然,更复杂的编码也需要更复杂的解码。