加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – HTML5 Canvas toDataURL(“image / png”)适用于某些绘画,

发布时间:2020-12-15 21:39:30 所属栏目:百科 来源:网络整理
导读:我正在使用asp.net 4(c#). 我在 Html 5画布上有一个绘图应用程序,能够添加图像和绘制多种颜色. 我想保存图片drawen到.png文件. 为了做到这一点,我构建了一个WebMethod: [WebMethod(EnableSession = true)]public static void UploadImage(string imageData,
我正在使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读