0

NihilogicのライブラリCanvas2Imageを使用して、キャンバスの描画をPNGに変換し、アプリケーションのユーザーにその画像をダウンロードできるようにしています。

私が必要としているのは、ダウンロード可能なファイルに名前とpng拡張子(「goalboard.png」など)を付けて、認識可能な拡張子と「ダウンロード」という名前のないオクテットストリームのようにダウンロードしないようにすることです。ジョーはそのようなファイルをどうするかわかりません。そして、クライアント側でこれを行う必要があります。そのバイトストリームをサーバーに送信するのは、その中のデータの量によっては、最大20秒かかる場合があるためです(これは大きなキャンバスです!)。後で画像を取得することは言うまでもありません...

だから、どうすればこれを行うことができますか?

4

3 に答える 3

1

これらの1つで問題が解決するはずです(キャンバスを使用すると、base64形式で画像を抽出できます)。

于 2012-08-08T17:51:18.510 に答える
1

私も大きな RaphaelJs キャンバスを持っていたので、多くのキャンバスを png 画像として保存するスクリプトをユーザーが実行できるようにする必要がありました。ラファエルを svn に変換し、次に svg を png に変換してから wget を使用しようとしましたが、javascript と wget によって生成されたキャンバスがそれを処理できないため、もちろんうまくいきませんでした。最終的に、webapp で svg キャンバスだけを使用してページを作成し、phantomjs (ヘッドレス ブラウザー) を使用してそれを png として保存できることに気付きました。それは見事に機能します。

それはそれと同じくらい簡単です。1. svg キャンバスだけでページを作成するように webapp を作成します。2. 次のコードで svgToPgn.js ファイルを作成します。

var page = require('webpage').create(); page.open('URL_TO_YOUR_HTML_PAGE', function() { page.render('PATH_TO_PNG/example.png'); phantom.exit(); }); 3. Phantom ( http://phantomjs.org ) をダウンロードして解凍すると、bin ディレクトリに phantomjs 実行可能ファイルが見つかります。実行: ./phantomjs svgToPgn.js PNG ファイルは次の場所に保存されます: PATH_TO_PNG/example.png

于 2013-12-18T11:04:15.520 に答える
0

そして、私はこれをクライアント側で行う必要があります

そうですね、その要件はあなたのチャンスを殺します。ごめん。

やりたいことはできません。画像を表示し、[名前を付けて保存]を右クリックするようにユーザーに指示するのが最善の方法です。

于 2012-08-08T15:33:29.710 に答える