概要
drawingboard.js を使うと HTML だけで簡単にペイント機能が追加できます
環境
- macOS 11.6.2
- Chrome 96.0.4664.110
- drawingboard.js 0.4.2
最小サンプルコード
index.html だけで動作します
サーバなどへのデプロイも不要です
- vim index.html
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width">
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/drawingboard.js/0.4.2/drawingboard.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/drawingboard.js/0.4.2/drawingboard.min.css">
<style data-example="2">
#board1 {
width: 400px;
height: 400px;
}
</style>
</head>
<body>
<div class="board" id="board1"></div>
<script data-example="2">
var board1 = new DrawingBoard.Board('board1', {
background: "#000000",
color: "#ffffff",
size: 30,
fillTolerance: 150,
controls: [
{ Size: { type: "range", min: 12, max: 42 } },
{ Navigation: { back: true, forward: true } },
'DrawingMode',
'Color'
],
webStorage: 'local',
droppable: true
});
board1.addControl('Download');
board1.downloadImg = function() {
var img = this.getImg();
img = img.replace("image/png", "image/octet-stream");
var link = document.createElement('a');
link.download = "download.png";
link.href = img;
link.click();
};
</script>
</body>
</html>
ちょっと解説
まず div タグを作成し id を振ります
その id を元に new DrawingBoard.Board
でボードを作成します
引数の2つ目でいろいろとオプションを指定できます
特に controls が重要でこれで消しゴムやペン、塗りつぶしなど様々なコントローラを設定できます
コントローラに指定可能な値は全部で4つで「Color」「DrawingMode」「Size」「Navigation」がありそれぞれ更にオプションを指定できます
ダウンロードボタンだけ board1.addControl('Download')
で設定します
デフォルトだと「ダウンロード」というファイル名でダウンロードされてしまうので拡張しなど指定したい場合は downloadImg 関数をオーバライドすることで指定できます
動作確認
- open index.html
こんな感じでペイント画面がブラウザで表示されれば OK です
最後に
簡単なペイント機能であれば簡単に追加できそうです
各種コントローラなどのボタンのイベントをハンドリングすれば作成した画像をサーバサイドに保存することもできそうです
ただあまりメンテナンスされていないのでそのうち動かなくなる可能性はありそうです
0 件のコメント:
コメントを投稿