Chrome/Firefox 在 context.drawImage() 中使用哪种算法?

问题描述 投票:0回答:1

规格说:

放大时,如果 imageSmoothingEnabled 属性设置为 false,则必须使用最近邻插值来渲染图像。

因此,当

imageSmoothingEnabled
为 false 并且过程正在扩大时,它使用最近邻,这就是我想要的。但我也想使用最近邻来缩小(如果它被认为是另一件事,当缩放相同时),基本上一直如此。

规格还说明了这些:

缩放时,如果 imageSmoothingEnabled 属性设置为 true,则用户代理应在缩放时尝试对图像数据应用平滑算法。当 imageSmoothingEnabled 属性设置为 true 时,支持多种过滤算法的用户代理可以使用 imageSmoothingQuality 属性的值来指导过滤算法的选择。否则,必须使用最近邻插值来渲染图像。

本规范没有定义缩小图像时使用的精确算法,或者当 imageSmoothingEnabled 属性设置为 true 时放大图像时使用的精确算法。

据我了解,当

imageSmoothingEnabled
为 false 且未按比例放大时,不能保证使用最近邻。

我不知道有什么方法可以正确且明确地测试它。 Chrome (Chromium) 和 Firefox 都是开源的。我检查了他们的存储库,但找不到任何有用的东西。我能找到的只是测试代码。

有没有办法确保

drawImage
使用最近邻?如果是的话,怎么办?

我不这么认为,但如果重要的话,我会使用 9 参数版本,并不时进行所有缩放/缩小/相同操作。这也是一个浏览器扩展项目。所以没有框架和 OffscreenCanvas。

我见过这个问题,但它已经很老了,而且答案并不令我满意。最好有要运行的示例代码或源代码链接。

提前致谢。

我尝试搜索存储库,但找不到相关功能。我想不出其他办法了。

javascript html5-canvas offscreen-canvas
1个回答
0
投票

我在 Firefox 源代码中找到了一些您可能想查看的文件。 我还附上了我使用的搜索区域的链接,因此您可以根据需要进行更深入的搜索。

实际函数定义

定义文件(.h)

我在 Firefox 代码中的搜索

© www.soinside.com 2019 - 2024. All rights reserved.