Обрезка фотографии с использованием только JavaScript, который принимает URL в качестве входных данных - PullRequest
0 голосов
/ 07 января 2011

Можно ли обрезать фотографию, используя только клиентский JavaScript?

Когда я пытался найти такой инструмент, часть JavaScript всегда использует DHTML, чтобы просто позволить пользователю выбирать, какую область изображения обрезать, а затем отправляет эту информацию в сценарий на стороне сервера (например, ASP, PHP), чтобы фактически выполнить урожай.

Я понимаю, что JavaScript не может создавать файлы или запрашивать их, однако я думаю, что обходные пути должны быть возможны. Что касается ввода, я хочу, чтобы файл JavaScript содержал URL-адрес изображения. Это просто, и вы можете легко создать элемент <image> для его отображения. Что касается вывода, я надеялся на решение URI данных .

Несколько решений существуют, однако, когда я пытаюсь их использовать (http://jsfiddle.net/sfjsfid/skm6V/1/), я получаю ошибку:

Uncaught Error: SECURITY_ERR: исключение DOM 18

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

Есть ли какой-либо другой способ иметь чисто клиентское JavaScript-решение для обрезки изображений, которые могут приходить из другого домена?

Если я попытаюсь использовать данные URI вместо изображения из другого домена (http://jsfiddle.net/VX2z2/),, это работает правильно. Однако, чтобы иметь возможность использовать URL-адрес изображения в качестве входных данных, мне необходимо преобразовать это как-то в URI данных. Использование canvas не сработает из-за проблем безопасности, о которых я уже говорил. Даже если я найду веб-сервис, который смог бы использовать, он тоже не сработает, потому что тогда я отправлю Ajax запрос к внешнему домену, что является еще одной угрозой безопасности, заблокированной браузером.

Размещение собственной версии веб-службы или хостинг-кода на стороне сервера недоступно.

Есть еще идеи? Или единственный вариант принять данные URI в качестве ввода?

Ответы [ 2 ]

1 голос
/ 07 января 2011

Нет способа обойти модель безопасности.Вам нужна помощь на стороне сервера для запроса данных из другого домена и доступа к ним из JavaScript.

1 голос
/ 07 января 2011

Если вы хотите нарушить модель безопасности, вам нужно сделать что-то, кроме веб-приложения - например, расширение Firefox.Это дало бы вам дополнительные привилегии для отправки запросов и даже для сохранения изображения.

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