Asp.net mvc 从浏览器画布保存图片
我目前正在用ASP.NETMVC开发一个网站,我需要用户能够在画布上绘制图片的功能,这些图片可以保存在数据库中。这样做的最佳方法是什么?最好是非常轻量级的解决方案。我认为flash将是最容易访问的平台,可能会有一些好的免费解决方案Asp.net mvc 从浏览器画布保存图片,asp.net-mvc,flash,canvas,paint,Asp.net Mvc,Flash,Canvas,Paint,我目前正在用ASP.NETMVC开发一个网站,我需要用户能够在画布上绘制图片的功能,这些图片可以保存在数据库中。这样做的最佳方法是什么?最好是非常轻量级的解决方案。我认为flash将是最容易访问的平台,可能会有一些好的免费解决方案 谢谢您应该能够在Silverlight中执行类似的操作。。。Silverlight应该能够毫无困难地将鼠标移动转换为线条笔划。我不知道是否也有纯JavaScript解决方案。您可以使用画布在DotNet中实现这一点 canvas.SaveAs(dstfile, "Qu
谢谢您应该能够在Silverlight中执行类似的操作。。。Silverlight应该能够毫无困难地将鼠标移动转换为线条笔划。我不知道是否也有纯JavaScript解决方案。您可以使用画布在DotNet中实现这一点
canvas.SaveAs(dstfile, "Quality=high");
以下是教程:
不需要使用Flash。Flash可以非常轻松地完成这项工作,不过您必须设置后端才能启用它。基本上,您可以将舞台上的任何东西绘制成像素数据的字节数组,然后对字节数组进行编码以符合例如.PNG规范。然后将整个包作为字节数组发送到后端,并确保服务器端脚本知道如何将其作为.png文件写入服务器,然后将该位置保存在数据库中。这有意义吗
在Flex Cookbook上可以找到一个广泛的例子:保存图像的一个很好的方法是使用原生的
toDataURL
方法
var element = document.getElementById('drawingCanvas');
var data = element.toDataURL();
// data holds the base64 encoded image of the canvas
从那里,您可以将其异步发布到服务器
$.ajax({
'type': 'post',
'dataType': 'json',
'data': {'image': data},
'url': '/json/image_converter.php'
});
并使用ImageMagick将其转换为图像:
list($header, $data) = explode(',', $_POST['image']);
$image = base64_decode($data);
$magick = new Imagick();
$magick->setFormat('png');
$magick->readImageBlob($image);
$magick->writeImage('/home/dude/imagefile.png');
编辑:哦,当然我忘了说IE不支持canvas,因此没有toDataURL方法。即使使用explorer canvas解决方案。用户MouseUp、mouseDown和MouceMove事件以及LintTo,移动到canvas的事件(所有javascript)来绘制图片,然后使用canvas.toDataURL()将此图片保存在yr数据库中的base64字符串中。我认为问题是指HTML5中的
标记,不是.NET中的Canvas
类。