Canvas to Blob не работает в Openlayers3

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
zhandos
Интересующийся
Сообщения: 24
Зарегистрирован: 16 ноя 2015, 10:48
Репутация: 0

Canvas to Blob не работает в Openlayers3

Сообщение zhandos » 29 янв 2016, 08:16

добрый день

имею следующий код в Openlayers3:
1. HTML

Код: Выделить всё

<li>
      <a href="#" id="export-as-image" onclick="saveAsPng()">
       <i class="glyphicon glyphicon-camera">
       </i>
       Скачать рисунок
      </a>
     </li>
2. JS

Код: Выделить всё

saveAsPng = function(){
  canvas = document.getElementsByTagName('canvas')[0];
  canvas.toBlob(function (blob) {
    saveAs(blob, 'map.png');
  });
};
в итоге выходит ошибка Uncaught TypeError: canvas.toBlob is not a function
пробовал добавить нa все слои (растровый через Geoserver+векторный geojson) crossOrigin: 'anonymous', не помогло

Помогите дельным советом, заранее благодарен!!!
Последний раз редактировалось zhandos 29 янв 2016, 13:20, всего редактировалось 1 раз.

parshin
Участник
Сообщения: 57
Зарегистрирован: 13 фев 2011, 10:34
Репутация: 26
Откуда: Moscow, Russia
Контактная информация:

Re: Canvas to Blob не работает в Openlayers3

Сообщение parshin » 29 янв 2016, 10:20

MDN утверждает, что метод toBlob мало кем реализован: https://developer.mozilla.org/en-US/doc ... patibility

Если вы хотите скачать canvas как картинку, попробуйте вот так: http://stackoverflow.com/questions/9238 ... pg-png-pdf

zhandos
Интересующийся
Сообщения: 24
Зарегистрирован: 16 ноя 2015, 10:48
Репутация: 0

Re: Canvas to Blob не работает в Openlayers3

Сообщение zhandos » 29 янв 2016, 11:41

Применил другой метод:

Код: Выделить всё

saveAsPng = function(){
  var canvas = document.getElementsByTagName('canvas')[0];
  var img    = canvas.toDataURL("image/png");
  document.write('<img src="'+img+'"/>');
};
Однако имеется следующая ошибка:
Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Canvas to Blob не работает в Openlayers3

Сообщение Ariki » 29 янв 2016, 13:12


parshin
Участник
Сообщения: 57
Зарегистрирован: 13 фев 2011, 10:34
Репутация: 26
Откуда: Moscow, Russia
Контактная информация:

Re: Canvas to Blob не работает в Openlayers3

Сообщение parshin » 29 янв 2016, 13:27

А это проблемы с безопасностью. Все картинки, загруженные с других доменов, которые были использованы при формировании canvas, должны быть получены с CORS headers (https://developer.mozilla.org/en-US/doc ... ntrol_CORS).

Для этого
  • сервер, отдающий картинки, должен поддерживать CORS
  • клиент при запросе картинки должен указывать параметр crossOrigin (со значением, например, 'anonymous')

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей