Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firefox中的Javascript画布内存问题_Javascript_Html5 Canvas_Image Resizing - Fatal编程技术网

Firefox中的Javascript画布内存问题

Firefox中的Javascript画布内存问题,javascript,html5-canvas,image-resizing,Javascript,Html5 Canvas,Image Resizing,我试图通过多个步骤调整图像的大小,以提高最终图像的质量。这在Opera浏览器中运行良好,但我认为Firefox中存在内存问题。调整一些图像的大小后,会出现以下错误:错误:图像损坏或被截断:blob:[XY]。所以我的问题是:您在下面的代码中看到内存问题了吗 loadImage.halfSize = function (i) { var c = document.createElement("canvas"); c.width = i.width / 2;

我试图通过多个步骤调整图像的大小,以提高最终图像的质量。这在Opera浏览器中运行良好,但我认为Firefox中存在内存问题。调整一些图像的大小后,会出现以下错误:错误:图像损坏或被截断:blob:[XY]。所以我的问题是:您在下面的代码中看到内存问题了吗

loadImage.halfSize = function (i) {
        var c = document.createElement("canvas");
        c.width = i.width / 2;
        c.height = i.height / 2;
        var ctx = c.getContext("2d");
        ctx.drawImage(i, 0, 0, c.width, c.height);
        return c;
    };

    loadImage.renderImageToCanvas = function (
        canvas,
        img,
        sourceX,
        sourceY,
        sourceWidth,
        sourceHeight,
        destX,
        destY,
        destWidth,
        destHeight
    ) {
            canvas.width = sourceWidth;
            canvas.height = sourceHeight;
            canvas.getContext('2d').drawImage(
                img,
                sourceX,
                sourceY,
                sourceWidth,
                sourceHeight);

            if(sourceWidth <= destWidth && sourceHeight <= destHeight) {
                return canvas;
            }

            while (canvas.width > destWidth * 2) {
                canvas = loadImage.halfSize (canvas);
            }

            var canvasRes = document.createElement("canvas");
            canvasRes.width = destWidth;
            canvasRes.height = destHeight;
            var canvasResCtx = canvasRes.getContext("2d");
            canvasResCtx.drawImage(canvas, 0, 0, canvasRes.width, canvasRes.height);

            return canvasRes;
    };
loadImage.halfSize=函数(i){
var c=document.createElement(“画布”);
c、 宽度=i.宽度/2;
c、 高度=i.高度/2;
var ctx=c.getContext(“2d”);
ctx.drawImage(i,0,0,c.宽度,c.高度);
返回c;
};
loadImage.renderImageToCanvas=函数(
帆布,
img,
sourceX,
sourceY,
源宽度,
源高度,
destX,
德斯蒂,
宽度,
目的地高度
) {
canvas.width=sourceWidth;
canvas.height=源高度;
canvas.getContext('2d').drawImage(
img,
sourceX,
sourceY,
源宽度,
源高度);

if(sourceWidth Hi Ben.要直接回答您的问题,不,我看不出这里有任何明显的错误。我已经在Firefox 30.0(OSX)上运行了:。感谢您的回答。嗯,有趣的是,您的独立示例似乎在我的Firefox中运行。我想我需要分析为什么它与我的其他代码结合使用时不起作用。