Firefox中的Javascript画布内存问题
我试图通过多个步骤调整图像的大小,以提高最终图像的质量。这在Opera浏览器中运行良好,但我认为Firefox中存在内存问题。调整一些图像的大小后,会出现以下错误:错误:图像损坏或被截断:blob:[XY]。所以我的问题是:您在下面的代码中看到内存问题了吗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;
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中运行。我想我需要分析为什么它与我的其他代码结合使用时不起作用。