14

したがって、いくつかの新しい (らしい) 関数が提案されていることがわかります。toDataURLHD、、、toBlobHDなど。 getImageDataHD「ネイティブ キャンバス ビットマップ解像度で [データ] を返します」( http://developers.whatwg.org/the-canvas-element.html )。

しかし、用語がわかりません。これは、非 HD バージョンが画像データを返す前に再スケーリングする状況があるということですか? (つまり、高解像度ディスプレイtoDataURLでは、実際のキャンバスよりも低品質の画像が生成される可能性があります)、またはこれは単に画像のインチあたりのピクセル数のメタデータを参照しているだけですか?

私は考えられる限り多くのスケーリング方法を試してきました (fiddle: http://jsfiddle.net/SktKQ/ )。常にピクセル対ピクセルのように見えますが、それはほとんど決定的ではなく、私は知りませんテストする高解像度ディスプレイにアクセスできます。

私が探しているのは、要素に設定された属性toDataURLと正確に等しい幅と高さを持つキャンバスのピクセルごとのコピーを作成する & Co.に頼ることができるかということだけです。(もしそうなら、HDバージョンのポイントは何ですか?)

4

1 に答える 1

5

キャンバス上の WhatWG ドキュメントには、次のように記載されています。

座標空間のサイズは、ユーザー エージェントが内部またはレンダリング中に使用する実際のビットマップのサイズを必ずしも表していません。たとえば、高解像度ディスプレイでは、ユーザー エージェントは内部的に座標空間で 1 単位あたり 2 つのデバイス ピクセルを持つビットマップを使用し、全体を通してレンダリングが高品質に保たれるようにすることができます。同様に、アンチエイリアシングは、ディスプレイ上の最終イメージよりも高い解像度のビットマップを使用したオーバーサンプリングを使用して実装できます。

toDataURL() メソッドは、96dpi の解像度でデータを返します。toDataURLHD() メソッドは、ネイティブ キャンバス ビットマップ解像度でそれを返します。

これを理解する方法は、toDataURLCSS ピクセル (96 DPI) を返すだけです。ただし、実装では、 を通してのみ表示されるより高いピクセル密度を自由に使用できますtoDataURLHD。つまり、キャンバスを CSS ピクセル サイズである 800x600 として定義したとしても、実装では実際には 192 DPI 密度 (1600x1200) を使用できます。前者を使用すると、800x600HDが得られますが、この方法では実際のピクセルが保証されます。

さらに、次のことが述べられています。

したがって、2D コンテキストでは、drawImage() メソッドを呼び出して toDataURLHD() メソッドの出力をキャンバスにレンダリングしても、適切な寸法が与えられても目に見える効果はありません。

toDataURLただし、 の画像データを使用しても目に見える効果 (解像度が低下する)がないことは保証されていません。

于 2013-08-22T17:29:33.107 に答える