Отже, я використовую карти Google, і отримую зображення, щоб воно виглядало так
<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.012318
&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,/, ""));
};
}
Але я отримую цю проблему:
Невпіймана Помилка безпеки: Не вдалося виконати 'toDataURL' на 'HTMLCanvasElement': забруднені полотна не можуть бути експортовані.
Я шукав виправлення. Я знайшов тут зразок Як використовувати CORS, але все одно я не можу зв’язати ці 2 шматки коду, щоб він працював. Можливо, я роблю це неправильно, і є простіший спосіб зробити це? Я намагаюся зберегти цю картинку, щоб я міг перенести дані на свій сервер. То, можливо, хтось зробив щось подібне і знає, як змусити .toDataURL()
працювати так, як мені це потрібно?
403
), ви можете повернутися до використанняcanvas.toDataURL(img)
в надії, що він подається з того самого джерела, що і сторінка. Ця поведінка за замовчуванням також призведе до вихідного файлу (EXIF та ін.)