0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Canvas の表示幅と書き出し画像の幅を別々にテストする

0
Posted at

画像エディターのプレビューを幅 320 px にしても、保存した画像まで幅 320 px になるとは限りません。Canvas の描画領域と、ページ上で要素が占める幅は別々に設定できるからです。

たとえば、canvas.width を 640、canvas.height を 480 にして、CSS で表示幅を 320 px にします。枠線や CSS 変形を加えなければ、レイアウト上では幅 320 CSS px です。この Canvas を toBlob() で PNG に書き出すと、PNG の画像サイズは 640 × 480 ピクセルです。CSS の表示幅を変えても、書き出し用の描画領域は変わりません。

テストでは、プレビューの表示幅を測り、次に Blob をデコードして出力画像の幅を確認します。たとえば、「表示幅 320 CSS px」「出力幅 640 px」を別々のアサーションにします。Blob が作れなかった場合は、幅の比較より先に書き出し失敗として扱います。

書き出し画像を小さくしたい場合は、目的の寸法で別の Canvas を作り、そこへ描画してから書き出せます。表示中の Canvas の width を途中で設定し直すと、描画内容とコンテキストの状態がリセットされます。プレビューと書き出しで領域を分けておくと、プレビューを消さずに出力サイズを変えられます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?