14

所以我看到有人提出了一些新的(ish)功能;toDataURLHD, toBlobHD,getImageDataHD等“以本机画布位图分辨率返回[数据]”(http://developers.whatwg.org/the-canvas-element.html)。

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

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

我正在寻找的是:我可以依靠toDataURL& Co. 生成我的画布的逐像素副本,其宽度和高度完全等于元素上设置的属性吗?(如果是这样,高清版本的意义何在?)

4

1 回答 1

5

画布上的 WhatWG 文件说:

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

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

我的理解是,它toDataURL只是返回 CSS 像素(96 DPI);但是该实现可以免费使用更高的像素密度,而这些像素密度只能通过toDataURLHD. 也就是说,即使您将画布定义为 800x600(作为 CSS 像素大小),实现实际上也可以使用 192 DPI 密度(1600x1200);如果您使用前者,您将获得 800x600,而该HD方法可以保证您获得实际像素。

此外,声明如下:

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

但是,不能保证使用来自的图像数据toDataURL不会产生可见的效果(分辨率较差)。

于 2013-08-22T17:29:33.107 回答