2011-10-10
web上でお絵かき+画像をサーバに保存するアプリをつくった
webブラウザ上でお絵かき+画像を保存+URLをはたくと他の人にも画像を見せられる
というアプリをつくった。
web-painter
HTML5/jQuery(お絵かき部分)+PHP(保存・表示部分)+MySQL(データためとく)です。
○お絵かき部分
DrawBoxを使わせていただきました。
ファイルを設置してcanvas要素を入れるだけでお絵かきできる。楽だー。
○保存・表示部分
canvasの中身をURLエンコードして(これはjavascript)それをPHPのほうに
POSTしてます。
↓渡してるjavascript
function submitImg(){
var PNG = drawbox.toDataURL('image/png').replace(/^.*,/, '');
var form = document.createElement('form');
document.body.appendChild(form);
var input = document.createElement( 'input');
input.setAttribute('type','hidden');
input.setAttribute('name','img');
input.setAttribute('value', PNG);
form.appendChild( input );
form.setAttribute('action','saveImg.php');
form.setAttribute('method','post');
form.submit();
}
エンコードすると絵がすごい長い文字列になるので、それを受け取って
MySQLに保存。
(データ型はTEXTだと足りなかったっぽいのでMEDIUMTEXT型にした)
保存した文字列を
<img src="data:image/jpeg;base64,保存した文字列" alt="image" width="150" height="150">
みたいな感じで見せるとちゃんと画像が表示される。
あと、保存しとくときに一意の文字列を生成して、それを別のフィールドに同時に保存。
画像を表示するときはその一意の文字列からテーブル内を検索して、画像を表す文字列をひっぱってくるようにしてる。
公開したら、さっそく改善案をいただいたので
これからもっといい感じになるようにかえていきます。
○参考にさせていただいたページ
・canvasに描いた絵(画像)をサーバに保存
・Canvasによる画像ファイル(img要素)の読み書き
ありがとうございました!
トラックバック - http://d.hatena.ne.jp/canbee/20111010/1318229665
リンク元
- 12 http://tenderbeer.net/index.html
- 2 http://twitter.com/
- 1 http://creaters.eightbit.jp/prof.php?creater_id=234
- 1 http://d.hatena.ne.jp/favril/20100316/1268725431
- 1 http://d.hatena.ne.jp/favril/20100506/1273143063
- 1 http://k.hatena.ne.jp/keywordblog/JavaScript?mode=rss
- 1 http://k.hatena.ne.jp/keywordblog/JavaScript?next=3680753581743705543
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=%E3%81%8A%E7%B5%B5%E3%81%8B%E3%81%8D%E3%80%80%E4%BF%9D%E5%AD%98%E3%80%80URL&source=web&cd=8&ved=0CF4QFjAH&url=http://d.hatena.ne.jp/canbee/20111010/131822
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=%E7%94%BB%E5%83%8F%E5%8F%82%E7%85%A7+HTML5+%E3%81%8A%E7%B5%B5%E3%81%8B%E3%81%8D&source=web&cd=9&ved=0CFwQFjAI&url=http://d.hatena.ne.jp/canbee/20111010%
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=php 画像保存 data:image/jpeg;base64&source=web&cd=4&sqi=2&ved=0CDcQFjAD&url=http://d.hatena.ne.jp/canbee/20111010/1318229665&ei=tT-sTr