如何使用 toDataURL 创建无损的 WebP 图像?

4
我正在使用canvas元素在Chrome中尝试WebP图像格式。在MDN上,我看到toDataURL接受第二个参数表示生成的图像质量。
我想生成一个无损的WebP画布元素图像。然而,如果我将质量设置为1(表示100%),则无法获得完全相同的像素。它似乎生成了有损图像。
下面是一个测试用例:http://jsfiddle.net/Nf5ve/1/。绘制PNG图像时,某个像素的某种颜色值为40。在将画布的100%质量WebP图像绘制在自身后,相同的值已更改为37。尽管我传递了100%的质量,但这对我来说并不是无损的。
是否可能让toDataURL创建无损WebP图像?如果可以,如何实现?

仅作双重检查,原始PNG中是否有透明度? - Jacob Foshee
@Jacob Foshee:不,这是从http://lorempixel.com获取的随机照片。 - pimvdb
1个回答

4

目前还没有官方的webp MIME类型,所以现在需要带着一定的保留观点。

在chrome中使用"image/webp"在toDataURL中将始终导致有损的webp图像,即使质量为"1"。

目前似乎没有办法获得无损的webP图像。


非常抱歉我的无知 - 但是 image/webp-lossless 给我一个以 data:image/png 开头的数据 URL。任何随机 MIME 类型都会发生相同的情况 - 我想它会回退到 png。不过我找到了 这个消息,说明无损还不太稳定,但很快就会发布。我想我会等一段时间看看会发生什么。 - pimvdb
如果我没有错的话,这段Chromium源代码证实了我的理论。如果我注意到关于无损WebP有趣的东西,我会更新的。感谢你的帮助! - pimvdb
哦,糟糕,你是对的,我应该更加勤奋! 我想现在你运气不佳。目前来看,除了谷歌以外,Webp还没有官方的MIME类型。 - Simon Sarris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接