ホームページ ウェブフロントエンド htmlチュートリアル HTMLキャンバス内の画像をlocal_html/css_WEB-ITnoseに保存します。

HTMLキャンバス内の画像をlocal_html/css_WEB-ITnoseに保存します。

Jun 24, 2016 am 11:47 AM

これを実行したい場合は、次のことができます:

  • js を直接操作して保存
  • ポストバック保存
  • js を直接操作して保存

    ms が公式の解決策を提供します。以下を参照してください:
    ローカルに保存キャンバス画像
    デモアドレス

    IE10 での効果はまだ良好ですが、他の IE バージョンはテストされていません。
    残念ながら、Chrome などの他のブラウザではサポートされていません。

    ポストバックの保存

    もう 1 つの解決策は、キャンバス内のコンテンツを取り出し、サーバーにポストバックし、ファイル ダウンロード方法を使用して画像をローカルに保存することです。

    これを行った後、サーバーに戻ったところ、データトラフィックはそれほど小さくありませんでした(もちろん、実際に大規模ではない限り、現在のネットワーク速度とサーバー構成ではまだ小さいですが)。そうですね、個人的にはこれ以上の解決策はまだありません。

    キャンバスのコンテンツ (QR コードなど) を編集する必要がなく、表示用の画像や画像を動的に生成するだけの場合は、サーバー側で GD などのプログラミングを直接使用してメモリ画像や画像を生成することもできます。それらをクライアントに表示します (または、一時サーバー ファイルを生成し、不要になったら削除します)。
    上記の方法と比較して、この方法は画像処理をサーバーに任せるため、サーバーのCPU使用率に高い負荷がかかります。クライアント側で生成された場合、分散エフェクトは ^_^

    例 (asp.net mvc - razor):

    <form method="post" action="../Download" target="_blank" style="display:none" id="form_download"></form>@section scripts{    <script type="text/javascript" src="~/Scripts/jquery.qrcode.min.js"></script>    <script type="text/javascript" src="~/Scripts/qrcode.min.js"></script>    <script type="text/javascript"> var url = "@Html.Raw(Url.Action("CheckTicket", "MeetingCenter", new { area = "wxfuns", id = Model.Id }).EncodeUrlWithOauth(Model.WxAcct.AppId))"; $("#qrcode").qrcode({ //render: "canvas", //table|canvas方式 width: 400, //宽度 height: 400, //高度 text: url //任意内容 }); //$("#qrcode").qrcode("@ViewBag.url"); function saveAsLocalImage() { // 如果使用getElementById或者$("#qrcode")的方式,会报错说不支持toDataURL方法 var myCanvas = document.getElementsByTagName('canvas')[0]; var image = myCanvas.toDataURL("image/png"); // 这个form动态生成也行 var f = $('#form_download'); // 命名带上“1”是为了提醒以后可以做成多个的键值对 var name1 = $('<input name="name1" type="text" value="@Html.Raw(Model.Title)" />'); var val1 = $('<input name="val1" type="text" value="' + image + '" />'); name1.appendTo(f); val1.appendTo(f); f.submit(); // 因为这个f不是动态生成的,需要清空这个form,否则第二次提交就有问题了。 f.html(""); } </script>}
    ログイン後にコピー
    public ActionResult Download(FormCollection collection){    try    {        // 一样的,命名带上“1”是为了提醒以后可以做成多个的键值对        string name1 = collection["name1"];        string val1 = collection["val1"];        if (string.IsNullOrEmpty(name1) || string.IsNullOrEmpty(val1) || (val1.StartsWith("data:image/png;base64") == false))        {            return new EmptyResult();         }        var base64 = val1.Substring(22);        byte[] bytes = Convert.FromBase64String(base64);        MemoryStream memStream = new MemoryStream(bytes);        return File(memStream, "application/octet-stream", Server.UrlEncode(name1 + ".png"));    }    catch (Exception ex)    {        return Content(ex.Message);    }}
    ログイン後にコピー
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    &lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

    この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

    &lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

    この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

    HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

    記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

    &lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

    この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

    HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

    この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

    HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

    この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

    ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

    この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

    &lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? &lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

    この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

    See all articles