微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – HTML5 Canvas toDataURL(“image / png”)适用于某些绘画,有些不适用,不知道为什么

我正在使用asp.net 4(c#).
我在 Html 5画布上有一个绘图应用程序,能够添加图像和绘制多种颜色.
我想保存图片drawen到.png文件.
为了做到这一点,我构建了一个WebMethod:

[WebMethod(EnableSession = true)]
public static void UploadImage(string imageData,string name)
{
    System.Diagnostics.Debug.WriteLine("here friend!");
}

现在我在页面上有一个按钮,我使用javaScript来调用方法

function trySend()
{
    var image = document.getElementById("drawCanvas").toDataURL("image/png");
    image = image.replace('data:image/png;base64,','');
    var name = document.getElementById("userName").value;
    $.ajax(
    {
        type: 'POST',url: 'CanvasSave.aspx/UploadImage',data: '{ "imageData" : "' + image + '" ' + ',"name" : "' + name + '"}',contentType: 'application/json; charset=utf-8',dataType: 'json',success: function (msg) {
        location.href = '<%= Page.ResolveUrl("~/ShowCards.aspx") %>';
        }
     });
}

问题是,如果我在画布上绘制一个简单的绘图(某些线条或一个小圆圈),它就会完美无缺.
即使我有一张“邮票”(图片),它仍然可以使用.

如果我画一个“复杂”的图像(不是很复杂!只是一个不同颜色的划痕)或添加2,3张图章它不起作用. WebMethod根本没有被调用,即使我等了很长时间.

我认为它必须对图像的大小做一些事情.似乎如果数据的最终大小减去80 kb(这是我能够保存的图像的最大尺寸)那么它可以工作,但如果预期的图像将比这大,我有一个问题.
同样,所有问题都在JS中而不是在C#代码中.

这是我得到的JavaScript错误

POST http://localhost:53751/CanvasSave.aspx/UploadImage 500 (Internal Server Error) 
jquery.min.js:4
f.support.ajax.f.ajaxTransport.send jquery.min.js:4
f.extend.ajax jquery.min.js:4
trySend Default.aspx:21
onclick

这个问题的原因是什么,我该如何解决

解决方法

正如我在评论中所述,我不是ASP / Windows的人 – 我相信这里的其他人可以澄清,但从我在网上看到的内容,您需要在服务器上执行以下操作:

Add the following to your web.config or mod the settings in the machine.config

<system.web>
  <httpRuntime maxRequestLength="XXXXXX" />
</system.web>

以上应该改变任何请求允许的最大大小,我认为XXXXX值需要以字节为单位给出.现在,这是否是唯一需要更改的配置设置还有待观察. PHP有两个设置需要根据上传和后限制进行更改.

编辑

要更改maxJsonLength,您需要将以下内容添加到服务器上的web.config文件中:

<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="5000000">
      </jsonSerialization>
    </webServices>
  </scripting>
</system.web.extensions>

我无法找到认的maxJsonLength是什么,有人说它是2097152个字符,有些人说102400个字符……无论哪个,5000000应该足够了:)

以下内容可用于查找maxJsonLength当前的内容

Confusion over maxJsonLength default value

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐