首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将html5画布保存到绘图板

将html5画布保存到绘图板
EN

Stack Overflow用户
提问于 2011-11-04 01:31:58
回答 1查看 972关注 0票数 0

我目前正在用html5设计一个幻灯片注释产品,它支持所有支持html5 canvas的平板电脑和浏览器。我让它将我在画布上的注释保存到电脑上,而不是保存到平板电脑上。

在所有方面,理想的情况是将画布注释数据作为数据保存在mysql数据库中,但我不能使用Ajax。

因此,我坚持将带注释的图像保存到他们本地计算机上的图像中。

下面是我的代码(我使用canvas2image)

window.onload =函数(){

代码语言:javascript
复制
    var bMouseIsDown = false;

    var oCanvas = document.getElementById("drop1");
    var oCtx = oCanvas.getContext("2d");

    var imgData = oCanvas.toDataURL();

    var iWidth = oCanvas.width;
    var iHeight = oCanvas.height;

var img = new Image();

img.src = "Lectures/<?php echo $_REQUEST["ClassID"]; ?>/<?php echo $_REQUEST["CatID"]; ?>/Slide<?php echo $_REQUEST["Slide"]; ?>.png";
img.onload = function() {
    oCtx.drawImage(img, 0, 0)
}


    oCanvas.onmousedown = function(e) {
        bMouseIsDown = true;
        iLastX = e.clientX - 130;
        iLastY = e.clientY - oCanvas.offsetTop + (window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop);
    }
    oCanvas.onmouseup = function() {
        bMouseIsDown = false;
        iLastX = -1;
        iLastY = -1;
    }
    oCanvas.onmousemove = function(e) {
        if (bMouseIsDown) {
            var iX = e.clientX-130;
            var iY = e.clientY - oCanvas.offsetTop + (window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop);
            oCtx.moveTo(iLastX, iLastY);
            oCtx.lineTo(iX, iY);
            oCtx.stroke();
            iLastX = iX;
            iLastY = iY;
        }
    }

    function showDownloadText() {
        document.getElementById("buttoncontainer").style.display = "none";
        document.getElementById("textdownload").style.display = "block";
    }

    function hideDownloadText() {
        document.getElementById("buttoncontainer").style.display = "block";
        document.getElementById("textdownload").style.display = "none";
    }

    function convertCanvas(strType) {
        if (strType == "PNG")
            var oImg = Canvas2Image.saveAsPNG(oCanvas, true);
        if (strType == "BMP")
            var oImg = Canvas2Image.saveAsBMP(oCanvas, true);
        if (strType == "JPEG")
            var oImg = Canvas2Image.saveAsJPEG(oCanvas, true);

        if (!oImg) {
            alert("Sorry, this browser is not capable of saving " + strType + " files!");
            return false;
        }

        oImg.id = "canvasimage";

        oImg.style.border = oCanvas.style.border;
        oCanvas.parentNode.replaceChild(oImg, oCanvas);

        showDownloadText();
    }

    function saveCanvas(pCanvas, strType) {
        var bRes = false;
        if (strType == "PNG")
            bRes = Canvas2Image.saveAsPNG(oCanvas);
        if (strType == "BMP")
            bRes = Canvas2Image.saveAsBMP(oCanvas);
        if (strType == "JPEG")
            bRes = Canvas2Image.saveAsJPEG(oCanvas);

        if (!bRes) {
            alert("Sorry, this browser is not capable of saving " + strType + " files!");
            return false;
        }
    }

    document.getElementById("savepngbtn").onclick = function() {
        saveCanvas(oCanvas, "PNG");
    }
    document.getElementById("savebmpbtn").onclick = function() {
        saveCanvas(oCanvas, "BMP");
    }
    document.getElementById("savejpegbtn").onclick = function() {
        saveCanvas(oCanvas, "JPEG");
    }

    document.getElementById("convertpngbtn").onclick = function() {
        convertCanvas("PNG");
    }
    document.getElementById("convertbmpbtn").onclick = function() {
        convertCanvas("BMP");
    }
    document.getElementById("convertjpegbtn").onclick = function() {
        convertCanvas("JPEG");
    }

    document.getElementById("resetbtn").onclick = function() {
        var oImg = document.getElementById("canvasimage");
        oImg.parentNode.replaceChild(oCanvas, oImg);

        hideDownloadText();
    }

}
EN

回答 1

Stack Overflow用户

发布于 2013-12-01 23:03:51

您是否考虑过使用Javascript创建一个包含隐藏字段的表单,将数据放入这些字段中,然后提交?this question的答案可能对您有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7999316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档