まず、画像をキャンバスに描画すると、まだpngではありません。これは、メソッドを呼び出すときにキャンバスAPIが機能する単純な生のビットマップであり、ブラウザに表示するためにpngに変換されます。を使用すると、それが得られますtoDataURL
。使用toDataURL
する場合、出力する画像形式を選択できますが、pngとともにjpegとbmpがサポートされていると思います。(別の形式に変換されたpngとは考えないでください。そうではありません)
また、ピクセルにビットを追加することで高品質とはどういう意味か正確にはわかりません。すべてのRGBAチャネルが8ビットの深さのトゥルーカラーを使用するには、32ビットで十分であり、人間の目よりも多くの色を使用できます。すぐに見てください。ユーザーがあなたの写真にさらされる照明と角度に応じて、彼の色の知覚は変わるかもしれませんが、品質は変わらないかもしれません。私が言うだろうそれの解像度だけに依存します。とにかく、キャンバスはそれらのより深い色で動作するように設計されていませんでした。正直なところ、キャンバスにレンダリングできるあらゆる種類のシーンでは、多くの色情報は必要ありません。これは、大規模なスタジオで作成された高解像度の映画やゲームにのみ関連します。 、キャンバスに濃い色を使用できたとしても、それは実際にはユーザーのビデオカードと画面のサポートに依存しますが、大多数の人は持っていないと思います。
各ピクセルの色に直接関係しないが、潜在的な変換に関する情報を追加したい場合はimageData
、キャンバスAPIで受け入れ可能なものを実行できる独自のタイプを作成し、32ビット形式と追加情報を維持することをお勧めします。対応するアレイ上。
はい、出力画像の解像度はキャンバスと同じですが、最終的な構図のサイズを変更する方法がいくつか用意されています。Simon Sarrisが言ったように、オフスクリーンキャンバスを作成します。このキャンバスの解像度は、画像の最終的な解像度になります。次に、次のいずれかを実行できます。
- サイズ変更パラメーターを使用し
drawImage
て生成された画像を提供しながら呼び出すことにより、ラスター画像のサイズを変更しますtoDataURL
- サイモンが言ったように、そこでシーンを再描画します。これにより、画像ファイルだけでなく、キャンバスAPIを介して作成された形状がコンポジションに含まれている場合、品質の低下が減少します。
事前に最終的な解像度がわかっている場合は、キャンバスの幅と高さを設定するだけですが、CSSの幅と高さは、キャンバスがWebページに収まるように別の方法で設定できます。