Javascript getImageData для холста HTML5 - PullRequest
5 голосов
/ 08 ноября 2010

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

Строка 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";

Ответы [ 2 ]

6 голосов
/ 08 ноября 2010

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

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

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

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

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

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

Вот демоверсия alt text

0 голосов
/ 08 ноября 2010

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

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

...