現在、ASP .NET MVCでWebサイトを開発していますが、データベースに保存できるキャンバスに画像を描画できるようにするための機能が必要です。これを行うための最良の方法は何ですか?できれば非常に軽量なソリューションです。私はフラッシュが最もアクセスしやすいプラットフォームであり、いくつかの良い無料のソリューションがあるかもしれないと思っていました。
ありがとう
現在、ASP .NET MVCでWebサイトを開発していますが、データベースに保存できるキャンバスに画像を描画できるようにするための機能が必要です。これを行うための最良の方法は何ですか?できれば非常に軽量なソリューションです。私はフラッシュが最もアクセスしやすいプラットフォームであり、いくつかの良い無料のソリューションがあるかもしれないと思っていました。
ありがとう
これは、キャンバスを使用してDotNetで実行できます。
canvas.SaveAs(dstfile, "Quality=high");
チュートリアルは次のとおりです。http ://www.websupergoo.com/helpig6net/source/3-examples/1-drawimage.htm
Flashを使用する必要はありません。
Flashは非常に簡単に実行できますが、有効にするにはバックエンドを設定する必要があります。基本的に、ステージ上のあらゆるものをピクセルデータのバイトアレイに描画し、そのバイトアレイをエンコードして、たとえば.PNG仕様に準拠させることができます。次に、パッケージ全体をバイト配列としてバックエンドに送信し、サーバー側スクリプトがそれを.pngファイルとしてサーバーに書き込むことを認識していることを確認してから、その場所をデータベースに保存します。それは理にかなっていますか?
幅広い例は、Flexクックブックにあります:http://cookbooks.adobe.com/post_Creating_a__png_file_from_a_webcam_image-12732.html
画像を保存する優れた方法は、ネイティブtoDataURL
メソッドを使用することです。
var element = document.getElementById('drawingCanvas');
var data = element.toDataURL();
// data holds the base64 encoded image of the canvas
そこから、サーバーに非同期で投稿できます
$.ajax({
'type': 'post',
'dataType': 'json',
'data': {'image': data},
'url': '/json/image_converter.php'
});
ImageMagickを使用して画像に変換します。
list($header, $data) = explode(',', $_POST['image']);
$image = base64_decode($data);
$magick = new Imagick();
$magick->setFormat('png');
$magick->readImageBlob($image);
$magick->writeImage('/home/dude/imagefile.png');
編集:ああ、そしてもちろん、IEはcanvasをサポートしていないので、toDataURLメソッドをサポートしていないと言うのを忘れました。エクスプローラーキャンバスの回避策があっても。
Silverlightでこのようなことができるはずです...Silverlightは、マウスの動きを問題なく線のストロークに変換できるはずです。純粋なJavaScriptソリューションもあるかどうかはわかりません。
ユーザーMouseUp、mouseDownおよびMouceMoveイベントとcanvas(すべてjavascript)のLintTo、MoveTOイベントを使用して画像を描画し、canvas.toDataURL()を使用してこの画像をyrデータベースのbase64文字列に保存します。