Javascript 使用asp.net将高分辨率画布图像保存到服务器
我有以下代码将画布图像保存到web服务器。但当图像的分辨率超过200*200像素且分辨率很高时,它就不起作用了:它无法保存。一个小的图像作品;但高分辨率的大图像不起作用Javascript 使用asp.net将高分辨率画布图像保存到服务器,javascript,c#,asp.net,canvas,Javascript,C#,Asp.net,Canvas,我有以下代码将画布图像保存到web服务器。但当图像的分辨率超过200*200像素且分辨率很高时,它就不起作用了:它无法保存。一个小的图像作品;但高分辨率的大图像不起作用 <script type="text/Javascript"> function drawShapes() { var canvas = document.getElementById("myCanvas"); var context = can
<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();
}
}
}
}
函数drawShapes(){
var canvas=document.getElementById(“myCanvas”);
var context=canvas.getContext(“2d”);
var imageObj=新图像();
imageObj.src=“im.jpg”;
imageObj.onload=函数(){
drawImage(imageObj,0,0,1800,1080);
}
}
$(文档).ready(函数(){
$(“#TZ”)。单击(函数(){
var image=document.getElementById(“myCanvas”).toDataURL(“image/png”);
image=image.replace('data:image/png;base64','');
$.ajax({
键入:“POST”,
url:'Include/CS.aspx/UploadImage',
数据:'{“imageData”:“'+image+'''''}',
contentType:'application/json;charset=utf-8',
数据类型:“json”,
/*成功:功能(msg){
警报(“图像已成功保存!”);
}*/
});
});
});
拯救
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.UI;
使用System.Web.UI.WebControl;
使用System.IO;
使用System.Web.Script.Services;
使用System.Web.Services;
[脚本服务]
公共部分类包括:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
}
[WebMethod()]
公共静态无效上载映像(字符串imageData)
{
字符串路径=System.Web.Hosting.HostingEnvironment.MapPath(“~/Images/”);
字符串fileNameWitPath=path+DateTime.Now.ToString().Replace(“/”,“-”).Replace(“,“-”).Replace(“:”,“)+”.png”;
使用(FileStream fs=newfilestream(fileNameWitPath,FileMode.Create))
{
使用(BinaryWriter bw=新的BinaryWriter(fs))
{
字节[]数据=Convert.FromBase64String(imageData);
写入(数据);
bw.Close();
}
}
}
}
您可能需要设置maxRequestLength,类似于web.config中的内容:
<system.web>
<httpRuntime maxRequestLength="153600" executionTimeout="900" />
</system.web>
请参阅:当您说它不起作用时,您能更具体一点吗?是否有服务器或客户端抛出的错误?>200*200像素=错误。。。或者是文件/数据大小?我的图像大小是1024*768,但此代码无法在服务器中保存画布图像。减少图像大小时,此代码有效!谢谢,我的图像大小是1024*768,但这段代码无法在服务器中保存画布图像。当图像大小减小到200*200时,此代码有效!你的回答不对,请帮帮我也许‘153600’不够大?只要尝试一个非常大的数字,看看它是否有效,然后你至少知道这是否是问题所在。