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

本文关键字:图像 保存 光盘 布转换 转换 | 更新日期: 2023-09-27 18:35:43

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

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

我自己的研究表明,我可以从JQuery使用Draggable,这很容易实现。这是我卡住的拯救部分。

我点击了几个链接,但图像似乎没有保存到光盘,我认为它在 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。

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

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

在动态js中使用图像时无法获取数据url

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

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;
}