Javascript getImageData для холста html5

Я рву на себе волосы! У меня это заработало, я подумал: «Я могу позволить себе не сохранять эту версию», а затем я… сломал «сборку».

Строка myImageData = context.getImageData(0, 0, canvas.width, canvas.height);, кажется, нарушает это, так как предупреждение будет работать до, но не после него.

Сам образ загружается.

Любые и все предложения приветствуются ^_^ Я на пределе, и скоро я получу RSI от удара ногой.

var myImageData;

var image_var = new Image();
image_var.onload  = function () {
    canvas.width  = image_var.width;
    canvas.height = image_var.height;
    context.drawImage(image_var, 0, 0, image_var.width, image_var.height);
    myImageData   = context.getImageData(0, 0, canvas.width, canvas.height);
    alert('');
}
image_var.src = "example1.jpeg";

person hugh jackson    schedule 08.11.2010    source источник
comment
Вы уверены в источнике изображения?? Заметили ли вы сообщение об ошибке в firebug вкладка консоли   -  person    schedule 08.11.2010
comment
Только что перешел с oxX на ubuntu, еще даже не установил firebug! Насколько это глупо? Я смотрю, какие ошибки он выдаст, если я попытаюсь снова запустить его локально - я дам вам знать.   -  person hugh jackson    schedule 08.11.2010
comment
Как и предсказывалось! Код ошибки безопасности: 1000.   -  person hugh jackson    schedule 08.11.2010
comment
Это ошибка перекрестного происхождения. См. здесь: disturbmedia.com/blog/ пост/   -  person james.garriss    schedule 19.08.2011


Ответы (2)


Добавьте приведенный ниже фрагмент кода к вашему фактическому коду, firefox позволяет вам работать локально

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");

что на самом деле он делает?

Когда скрипт вызывает эту функцию, если подпись действительна или включен основной код, могут быть предоставлены расширенные привилегии. Если пользователь ранее не обращался к этому принципалу, диалоговое окно спрашивает пользователя, хочет ли он принять подписанный код. В отличие от Communicator 4.x, Mozilla не отображает подробное диалоговое окно предоставления Java, а простое диалоговое окно с вопросом, можно ли доверять принципалу. Пользователь может принять или отклонить и позволить браузеру запомнить свой выбор. Как показано во втором примере, одновременно могут быть запрошены две привилегии, поэтому появляется только одно диалоговое окно.

Привилегии предоставляются только в рамках запрашивающей функции. Эта область включает в себя любые функции, вызываемые запрашивающей функцией. Когда сценарий покидает запрашивающую функцию, привилегии больше не применяются.

Подробнее об этом можно прочитать здесь

Вот демонстрация alt text

person Community    schedule 08.11.2010
comment
Большое спасибо дружище! На самом деле я наткнулся и реализовал это пару часов назад - должен был разместить здесь обновление, но это вылетело из головы. - person hugh jackson; 08.11.2010
comment
Рад тебя слышать. Хорошего дня ! - person ; 08.11.2010

Я нашел a решение. Проблема заключалась в том, что я пытался читать локальные файлы (т. е. на своем компьютере), с которыми не связано доменное имя (очевидно, локальный IP-адрес не учитывается). в этом случае). Чтобы защитить интересы людей с онлайн-контентом, браузеры W3C + сделали так, что getImageData() не работает с файлами, хранящимися за пределами сервера, на котором находится javascript.

К сожалению, он рассматривает локальные файлы как бесдоменные, поэтому, по-видимому, применяются ограничения безопасности. Я ищу способы решить эту проблему (на данный момент я смотрю на appCache и websql в HTML5, может принести или не принести плоды). Я бы предпочел, чтобы пользователю моего веб-приложения не приходилось загружать материал, с которым он работает (чтобы он мог работать в автономном режиме и по соображениям безопасности). Любые предложения приветствуются!

person hugh jackson    schedule 08.11.2010