将图像绘制到画布上不起作用

时间:2012-08-28 11:25:42

标签: javascript html5 html5-canvas

我正在尝试将图像绘制到画布上。图像位于html文件的文件夹中。但是当我调用drawImage()函数时,图像不会绘制。这是我的代码,

var upcan = document.createElement("canvas");
upcan.width = "190";
upcan.height = "380";
upcan.style.cssText = 'border-radius:25px; '
var upctx = upcan.getContext('2d');

var pb = new Image();

pb.onload = function() {
upctx.drawImage(pb,0,0,100,400);
};
pb.src = "photobooth.png";
var canvasData = upcan.toDataURL("image/png");

7 个答案:

答案 0 :(得分:1)

尝试此代码...您在绘制图像后提供了src,因此它现在正在绘制..

var upcan = document.createElement("canvas");
    upcan.width = "190";
    upcan.height = "380";
    upcan.style.cssText = 'border-radius:25px; '
    var upctx = upcan.getContext('2d');

    var pb = new Image();
    pb.src = "~/../urpath/photobooth.png"; //give here proper path
    pb.onload = function() {
    upctx.drawImage(pb,0,0,100,400);

    };

我认为它会解决你的问题

答案 1 :(得分:0)

    var upcan;
    var img = d.createElement('img');
    var reader = new FileReader();
    reader.onload = (function(aImg, aName) { 
       return function(e) {
        aImg.src = e.target.result;
        aImg.onload = function(){
            var upcan = createImgCanvas(aImg, 100, 400);
        }
    }; })(img, file.name);
    reader.readAsDataURL(file);

function createImgCanvas(img, imgWidth, imgHeight) {
    var canvas = document.createElement('canvas');
    canvas.width = imgWidth;
    canvas.height = imgHeight;
    var imageCanvas2D = canvas.getContext("2d");
    try{
        imageCanvas2D.drawImage(img, 0, 0, imgWidth, imgHeight);
    } catch(err) { alert(err);}
    return canvas;
}

答案 2 :(得分:0)

试试这个:

var upcan = document.createElement("canvas");
upcan.width = "190";
upcan.height = "380";
upcan.style.cssText = 'border-radius:25px; '
var upctx = upcan.getContext('2d');

var pb = new Image();
pb.src = "photobooth.png";
pb.onload = function() {
upctx.drawImage(pb,0,0);
};

答案 3 :(得分:0)

首先,您是否将画布附加到文档或任何其他元素?

答案 4 :(得分:0)

我在Chrome中使用开发人员工具在此页面上尝试了您的代码,使用此页面中的一个现有图像并将画布附加到正文。代码工作得很好,问题必须在其他地方。

答案 5 :(得分:0)

加载处理程序以异步方式运行;直到图像下载后才会执行。当前脚本将继续执行,因此将在下载图像之前拍摄画布的快照。将处理移动到加载处理程序中以确保在捕获之前已绘制所有内容。

pb.onload = function() {
    upctx.drawImage(pb,0,0,100,400);
    var canvasData = upcan.toDataURL("image/png");
    // do stuff
};
pb.src = "photobooth.png";

答案 6 :(得分:0)

问题出在upcan.toDataURL(“image / png”);.出于安全原因,它不会绘制源自外部的图像。