toDataURL vs toDataURLHD

时间:2013-08-22 17:12:22

标签: javascript html5-canvas

所以我看到有一些新的(ish)函数被提出; toDataURLHDtoBlobHDgetImageDataHD等“以原始画布位图分辨率返回[数据]”(http://developers.whatwg.org/the-canvas-element.html)。

但我不懂术语。这是否意味着有些情况下非HD版本会在返回之前重新调整图像数据? (即在高分辨率显示器上toDataURL可以产生质量低于实际画布的图像),或者这只是指图像中每英寸像素数的元数据?

我一直在尝试尽可能多的缩放方法(小提琴:http://jsfiddle.net/SktKQ/),它似乎总是像素为像素,但这几乎没有定论,我无法访问任何要测试的高分辨率显示器。

我正在寻找的是:我可以依靠toDataURL&有限公司生产我的画布的像素为像素的副本,其宽度和高度完全等于元素上设置的属性? (如果是这样,HD版本有什么意义?)

1 个答案:

答案 0 :(得分:5)

WhatWG documents on canvas说出以下内容:

  

坐标空间的大小不一定代表实际的大小   用户代理将在内部或在呈现期间使用的位图。关于高清   例如,用户代理可以在内部使用每个具有两个设备像素的位图   在坐标空间中单位,以便渲染始终保持高质量。   可以类似地使用具有更高位图的过采样来实现抗锯齿   分辨率高于显示屏上的最终图像。

  

toDataURL()方法以96dpi的分辨率返回数据。   toDataURLHD()方法以原生画布位图分辨率返回它。

我如何理解这是toDataURL只返回CSS像素(96 DPI);但实现可以自由使用更高的像素密度,只有通过toDataURLHD才能看到。也就是说,即使您将画布定义为800x600(CSS像素大小),实现也可以实际使用192 DPI密度(1600x1200);如果你使用前者,你得到800x600,而HD方法可以得到实际像素,保证。

此外还陈述如下:

  

因此,在2D上下文中,调用drawImage()方法来渲染输出   给予画布的toDataURLHD()方法,给定适当的尺寸,没有可见效果。

然而,无法保证使用toDataURL中的图像数据不会产生明显效果(分辨率较差)。