【问题标题】:Save high resolution canvas image to server using asp.net使用 asp.net 将高分辨率画布图像保存到服务器
【发布时间】:2015-05-06 12:25:00
【问题描述】:

我有这段代码可以将画布图像保存到网络服务器。但是当图像具有超过 200*200 像素和高分辨率时它不起作用:它不保存。一个小图像作品;但是高分辨率的较大图像不起作用。

    <script type="text/Javascript">
        function drawShapes() {
            var canvas = document.getElementById("myCanvas");
            var context = canvas.getContext("2d");
            var imageObj = new Image();
            imageObj.src = "im.jpg";
            imageObj.onload = function () {
                context.drawImage(imageObj, 0, 0, 1800, 1080);
            }
        }

    </script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#TZ").click(function () {
                var image = document.getElementById("myCanvas").toDataURL("image/png");
                image = image.replace('data:image/png;base64,', '');
                $.ajax({
                    type: 'POST',
                    url: 'Include/CS.aspx/UploadImage',
                    data: '{ "imageData" : "' + image + '" }',
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    /*success: function (msg) {
                        alert('Image saved successfully !');
                    }*/
                });
            });
        });
    </script>



<body onload="drawShapes()">
    <form id="form1" runat="server">
        <div>
            <canvas id="myCanvas" width="1800" height="1080"></canvas>
            <a id="TZ">Save</a>
        </div>
    </form>
</body>



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Web.Script.Services;
using System.Web.Services;

[ScriptService]

public partial class Include_CS : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    [WebMethod()]
    public static void UploadImage(string imageData)
    {
        string path = System.Web.Hosting.HostingEnvironment.MapPath("~/Images/");
        string fileNameWitPath = path + DateTime.Now.ToString().Replace("/", "-").Replace(" ", "- ").Replace(":", "") + ".png";
        using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
        {
            using (BinaryWriter bw = new BinaryWriter(fs))
            {
                byte[] data = Convert.FromBase64String(imageData);
                bw.Write(data);
                bw.Close();
            }
        }
    }
}

【问题讨论】:

  • 当你说它不起作用时,你能更具体一点吗?可能是服务器或客户端抛出了错误?
  • > 200*200 像素 = 错误...还是文件/数据大小?
  • 我的图片尺寸是 1024*768 但是这个代码不能在服务器中保存画布图片。当减小图像大小时,此代码有效!

标签: javascript c# asp.net canvas


【解决方案1】:

您可能需要在 web.config 中设置 maxRequestLength,如下所示:

<system.web> 
    <httpRuntime maxRequestLength="153600" executionTimeout="900" /> 
</system.web>

见:https://msdn.microsoft.com/en-us/library/e1f13641(v=vs.100).aspx

【讨论】:

  • 谢谢我的图片尺寸是 1024*768 但是这个代码不能在服务器中保存画布图片。当图像尺寸减小到 200*200 时,此代码有效!
  • 你的回答不正确,请帮帮我
  • 也许'153600'不够大?只需尝试一个非常大的数字,看看它是否有效,然后您至少知道这是否是问题所在。
猜你喜欢
  • 1970-01-01
  • 2014-10-03
  • 2015-10-20
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多