ToDataURL против toDataURLHD

Итак, я вижу, что есть некоторые новые (иш) функции, которые предлагаются; toDataURLHD, toBlobHD, getImageDataHD и т.д., который "возвращает [данные] в собственном растровом разрешении холста" (http://developers.whatwg.org/the-canvas-element.html).

Но я не понимаю терминологию. Означает ли это, что существуют ситуации, когда версии, отличные от HD, будут перемасштабировать данные изображения, прежде чем возвращать их? (т.е. на дисплее с высоким разрешением может toDataURL создать изображение, которое является более низким, чем фактическое холст), или это относится только к метаданным пикселей на дюйм в изображении?

Я экспериментировал с таким количеством методов масштабирования, как я могу думать (скрипт: http://jsfiddle.net/SktKQ/), и он всегда кажется пиксельным для пикселя, но это вряд ли является окончательным, и у меня нет доступа к дисплеям с высоким разрешением для тестирования.

Все, что я ищу, это: могу ли я полагаться на toDataURL и Co., создавая пиксельные для пикселя копии моего холста, которые имеют ширину и высоту, точно равные атрибутам, установленным на элементе? (и если да, то какая точка версии HD?)

Ответ 1

Документы WhatWG на холсте говорят следующее:

Размер координатного пространства не обязательно соответствует размеру фактического растровые изображения, которые пользовательский агент будет использовать внутри или во время рендеринга. На высокой четкости например, пользовательский агент может внутренне использовать растровые изображения с двумя пикселями устройства на каждый единица в координатном пространстве, так что рендеринг остается на высоком уровне. Аналогичным образом можно реализовать сглаживание с использованием избыточной выборки с растровыми изображениями более высокого уровня чем конечное изображение на дисплее.

и

Метод toDataURL() возвращает данные с разрешением 96 точек на дюйм. Метод toDataURLHD() возвращает его в собственном растровом разрешении canvas.

Как я понимаю, это то, что toDataURL просто возвращает пиксели CSS (при 96 DPI); но реализация может использовать более высокую плотность пикселей, которая будет видна только через toDataURLHD. То есть, даже если вы определяете свой холст размером 800x600, являясь размером пикселя CSS, реализация может фактически использовать плотность 192 DPI (1600x1200); если вы используете первый, вы получите 800x600, тогда как метод HD обеспечит вам фактические пиксели, гарантированные.

Далее указано следующее:

Таким образом, в 2D-контексте вызов метода drawImage() для вывода вывода toDataURLHD() к холсту, учитывая соответствующие размеры, не имеет видимого эффекта.

Однако не гарантируется, что использование данных изображения из toDataURL не будет иметь видимого эффекта (имеет худшее разрешение).