Поэтому я использую карты Google, и я получаю картину, так это выглядит, как этотcanvas.toDataURL() SecurityError
<img id="staticMap"
src="http://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap
&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.
&markers=color:red%7Ccolor:red%7Clabel:C%7C40.718217,-73.998284&sensor=false">
мне нужно, чтобы сохранить его. Я нашел это:
function getBase64FromImageUrl(URL) {
var img = new Image();
img.src = URL;
img.onload = function() {
var canvas = document.createElement("canvas");
canvas.width = this.width;
canvas.height = this.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(this, 0, 0);
var dataURL = canvas.toDataURL("image/png");
alert(dataURL.replace(/^data:image\/(png|jpg);base64,/, ""));
};
}
Но я получаю эту проблему:
Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': tainted canvases may not be exported.
я искал для исправления. Я нашел образец здесь How to use CORS, но все же я не могу связать эти два фрагмента кода, чтобы он работал. Может быть, я делаю это неправильно, и есть более простой способ сделать это? Я пытаюсь сохранить этот рисунок, чтобы передать данные на свой сервер. Так что, возможно, кто-то сделал что-то вроде этого и знает, как сделать .toDataURL()
работать так, как мне это нужно?
Я бы предложил альтернативное альтернативное предложение от @Prisoner и предложил сделать его по умолчанию. Сервер почти наверняка сможет получить изображение _img.src_ then * wget */* cURL * быстрее, чем клиент может кодировать изображение локального происхождения и POST его на сервер. Возможно, только если требуется аутентификация на стороне клиента (т. Е. Попытка вашего сервера заканчивается «403»), вы можете отказаться от использования 'canvas.toDataURL (img)' в надежде, что он будет обслуживаться с того же источника, что и страница. Это поведение по умолчанию также приведет к исходному файлу (EXIF et al.) – Alastair
Я установил ведро Google Cloud Storage в «Access-Control-Allow-Origin: *», но при попытке использовать метод toDataURL() я все же получаю эту ошибку безопасности. Изображение подается на холст через URL-адрес, созданный с помощью «getImageServingUrl» –
Любое решение пока? Этот ответ ударился. – Yeats