所以我看到有一些新的(ish)函数被提出; toDataURLHD
,toBlobHD
,getImageDataHD
等“以原始画布位图分辨率返回[数据]”(http://developers.whatwg.org/the-canvas-element.html)。
但我不懂术语。这是否意味着有些情况下非HD版本会在返回之前重新调整图像数据? (即在高分辨率显示器上toDataURL
可以产生质量低于实际画布的图像),或者这只是指图像中每英寸像素数的元数据?
我一直在尝试尽可能多的缩放方法(小提琴:http://jsfiddle.net/SktKQ/),它似乎总是像素为像素,但这几乎没有定论,我无法访问任何要测试的高分辨率显示器。
我正在寻找的是:我可以依靠toDataURL
&有限公司生产我的画布的像素为像素的副本,其宽度和高度完全等于元素上设置的属性? (如果是这样,HD版本有什么意义?)
答案 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
中的图像数据不会产生明显效果(分辨率较差)。