将 Javascript 图像绘制到屏幕外 Canvas 后未在 Canvas 上绘制

标签 javascript html canvas

我有一个要渲染到 Canvas 上的图像。当我这样渲染它时:

context.drawImage(image, x, y);

它按预期工作。但是,当我这样做时:

if (image.loaded)
    image = getPreRendered(image);
...
var renderedImages = [];
var tmpImage = null;
function getPreRendered(img) {
    imageIndex = ("" + img.src);
    tmpImage  = cachedSprays[tmpIndex];
    if (tmpImage == undefined) {
        var tmpCanvas = document.createElement("canvas");
        var tmpContext = tmpCanvas.getContext('2d');
        tmpCanvas.width = 50;
        tmpCanvas.height = 50;
        tmpContext.drawImage(img, 0, 0, 100, 100);
        tmpContext.imageSmoothingEnabled = false;
        tmpContext.webkitImageSmoothingEnabled = false;
        tmpContext.mozImageSmoothingEnabled = false;
        tmpContext.drawImage(tmpCanvas, 0, 0, 50, 50, 0, 0, 100, 100);
        tmpImage = tmpCanvas;
        cachedSprays[imageIndex] = tmpImage ;
    }
    return tmpImage ;
}

然而,当我这样做时,图像在 Canvas 上不再可见。

图像是这样创建的:

var image = new Image();
image.loaded = false;
image.onload = function () {
    image.loaded = true;
};

最佳答案

AJAX 和图像调用是异步。图像将/将加载,但您已经在图像仍在加载时调用了该函数。

var image = new Image();
image.onload = function () {
    // call here your render canvas function:
    getPreRendered( image );
};
image.src = "nOOdes.jpg"

关于将 Javascript 图像绘制到屏幕外 Canvas 后未在 Canvas 上绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36927491/

相关文章:

html - 删除最后一个 child 的边距

jquery - 如果确认提示错误,则从复选框中删除勾号

Javascript TIFF 图像转换

python - Tkinter - Canvas.move() 不会 move 列表中的最后一项

javascript - 使用 for 循环动态创建在 Canvas 中绘制的图像

javascript - d3 结合键值对对多个值的数据进行分组

javascript - parseInt() 字符串哈希返回整数

javascript - JavaScript 可以删除所有的工具栏、地址栏和窗口的设置大小吗?

javascript - 新对象注入(inject)DOM后如何使用jQuery?

JavaScript 与正六边形的点碰撞