Canvas 2Dで画像を処理する基本

Canvas 2Dで画像をリサイズ・保存するときの基本と、ドット絵をぼかさず表示する設定、解像度や保存形式で気を付ける点を解説します。

描画と書き出し

getContext('2d')で描画用の文脈を取り、drawImageで画像を縮小・拡大して描けます。toBlobを使えば、PNGやJPEGとして書き出せます。

CSSの大きさとピクセル数は別

canvasのwidth・height属性が実際のピクセル数で、CSSのサイズは見た目の大きさです。ドット絵は、image-rendering:pixelatedを指定すると、拡大しても滲みません。高精細な画面では、devicePixelRatioも考慮します。

制限

キャンバスの最大サイズは、ブラウザや端末ごとに異なります。大きすぎると描画に失敗することがあります。別のオリジンの画像を描くと、toBlobがエラーになる場合があります。

この技術を使っているツール

ほか62本のツールでも使っています。