Ошибка uncaught javascript-canvas: INDEX_SIZE_ERR: исключение DOM 1 - PullRequest
1 голос
/ 26 августа 2010

ОК, у меня есть две версии моего кода.Первый, кажется, работает (в основном), а второй дает мне Uncaught Error в названии темы.

defs:

var VID_WID = 640;
var VID_HIGH = 360;
var OUT_WID = 480;
var OUT_HIGH = 320;
var NUM_WID = 3;
var NUM_HIGH = 3;


var TILE_WIDTH = VID_WID / NUM_WID;
var TILE_HEIGHT = VID_HIGH / NUM_HIGH;
var OUT_WIDTH = OUT_WID / NUM_WID;
var OUT_HEIGHT = OUT_HIGH / NUM_HIGH;

Working:
    tile.sx = x*TILE_WIDTH;
    tile.sy = y*TILE_HEIGHT;
    tile.dx = x*OUT_WIDTH;
    tile.dy = y*OUT_HEIGHT;
...
    draw.drawImage(copycanvas, tile.sx, tile.sy,
        TILE_WIDTH, TILE_HEIGHT,
        tile.dx, tile.dy,
        OUT_WIDTH, OUT_HEIGHT);

Gets Exception:
    tile.sx = x;
    tile.sy = y;
    tile.dx = x;
    tile.dy = y;
...
    draw.drawImage(copycanvas, tile.sx*TILE_WIDTH, tile.sy*TILE_HEIGHT,
        TILE_WIDTH, TILE_HEIGHT,
        tile.dx*OUT_WIDTH, tile.dy*OUT_HEIGHT,
        OUT_WIDTH, OUT_HEIGHT);

ЕДИНСТВЕННАЯ разница, которую я вижу, ГДЕ я делаю умножение на параметры WIDTH и HEIGHT.Тем не менее, один работает, а другой дает исключение.

Я ХОЧУ использовать последний код, чтобы я мог сравнивать значения x и y .sx и .dx непосредственно с x вместо sx / TILE_WIDTH ==дх / OUT_WIDTH.Я думаю, я всегда могу добавить еще пару полей, чтобы дублировать усилия, но мне кажется, что мне НЕ нужно этого делать.

Есть идеи, почему одно работает, а другое нет?

Ответы [ 2 ]

3 голосов
/ 10 декабря 2010

Сначала, пожалуйста, посмотрите на картинку ниже.

Я также получил такой же код ошибки.В моем случае размер «исходного изображения» составлял 640 x 480. Я назначил параметр sx, sy с 10,10 и параметр sWidth, sHeight с 640,480.А потом я получил тот же код ошибки, что и вы.

Поскольку параметр sx, sy сдвигает окно захвата на 10,10 пикселя, окно sWidth, sHeight выходит за пределы диапазона.

В моем представленииЯ вызвал INDEX_SIZE_ERROR, потому что нет данных для ссылки.Я поместил негабаритный sWidth в sHeight.

alt text

drawImage (изображение, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)

0 голосов
/ 26 августа 2010

Хорошо, хорошо. Возможно, ошибка пилота или, по крайней мере, проблема в кабине.

Задача упражнения заключалась в том, чтобы манипулировать изображением, а также обрабатывать случай, когда поступающее изображение необходимо масштабировать до определенного выходного размера. Похоже, что в одном заклинании (или в экземпляре, если вы предпочитаете лучший английский) размер исходного холста был установлен равным (480x320), который соответствовал целевому холсту, вместо (640x360), который был правильным размером входного видео и размер, указанный для VID_WIDTH, VID_HEIGHT.

Ответ заключается в ПРОВЕРКЕ, что размер холста соответствует области, в которой вы рисуете. Если это не так, вы можете получить исключение index_size_error.

Запись большого видео в одном блоке - это нормально, но когда вы используете обтравочную маску / регион, вам лучше быть в пределах границ. (Может кто-нибудь это проверить?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...