将画布转换为图像并保存到光盘

时间:2013-10-17 14:05:37

标签: c# javascript jquery html5 canvas

已经有很多类似的问题,但由于某种原因,它们无法解决我的问题。

我的项目是保存动态创建的页面(或页面的一部分)。用户可以选择在屏幕上拖动对象并按任意顺序保留它们,然后将此订单作为图像保存到光盘。

我自己的研究显示我可以使用Draggable from JQuery,这很容易实现。这是我被困住的储蓄部分。

我关注了一些links,但图片似乎没有保存到光盘,我觉得它在IE中不起作用!但是,我对FireFox感到满意,所以使用toDataUrl()听起来就像是最好的方法。

由于我无法使其工作,我决定稍微改变策略并将值传递给后面的代码(C#)

我的代码的保存部分看起来像

<script>
    function SaveMe() {
        var canvas = document.getElementById("mycanvas");
        var image = canvas.toDataUrl();
        document.getElementById("hideMe").value = image;
    }
</script>

当我在FireBug中调试时,我从未到达document.getElementById("hideMe").value = image;。我一步一步但永远不会过去var image = canvas.toDataUrl();这是预期的行为,因为我假设没有,但没有错误信息?

我的HTML正文

<body>
    <script type="text/javascript">
        $(document).ready(function () {
            $('.popup_click').show(0).draggable();    
        });    
    </script>

    <form id="form1" runat="server">

        <div class="popup_click">
            <div id="popup_title">Title</div>
        </div>

        <canvas id="mycanvas" class="canvas"></canvas>

        <asp:HiddenField ID="hideMe" runat="server" />
        <asp:Button runat="server" OnClick="ClickMe" text="Click" OnClientClick="SaveMe()"/>

    </form>
</body>

我做错了什么?我在调试模式,Visual Studio 2013本地工作。

2 个答案:

答案 0 :(得分:1)

不是很确定,但我过去也遇到了todataurl()的问题,这个链接帮助了我

Not able to get data url when using images in kinetic js

答案 1 :(得分:1)

这是我想要将画布导出到图像时总是使用的功能,它将图像放入弹出窗口,以便用户可以用它做他们想做的事情(我希望这有帮助):

function imageCanvas(evt){
    var imageCanvas = document.createElement('canvas');
    imageCanvas.width = document.documentElement.clientWidth;
    imageCanvas.height = document.documentElement.clientHeight;
    var imageCanvasContext = imageCanvas.getContext("2d");
    imageCanvasContext.fillStyle = document.getElementById("body").style.backgroundColor;
    imageCanvasContext.fillRect(0,0,imageCanvas.width,imageCanvas.height);
    imageCanvasContext.drawImage(mainCanvas,0,0,imageCanvas.width,imageCanvas.height,0,0,imageCanvas.width,imageCanvas.height);
    var dataURL = imageCanvas.toDataURL("image/png");
    var imagePopup = window.open("","fractalLineImage","left=0,top=0,width="+(imageCanvas.width/2)+",height="+(imageCanvas.height/2)+",toolbar=0,resizable=0");
    imagePopup.document.write("<title>Export Image</title>");
    imagePopup.document.write("<img id='exportImage'"
    +" alt=''"
    +" height='"+ imageCanvas.height+"'"
    +" width='"+ imageCanvas.width+"'"
    +" style='position:absolute;left:0;top:0'/>");
    imagePopup.document.close();
    var exportImage = imagePopup.document.getElementById("exportImage");
    exportImage.src = dataURL;
}