Как разрезать фото на части?
Делаю собственную карту по шаблону от Яндекса https://tech.yandex.ru/maps/jsbox/2.1/custom_map. И там нужно целую карту разрезать на части в разных масштабах.
Посоветуйте сервис или что-то другое что сможет это сделать
Ответы (2 шт):
Можете попробовать воспользоваться ImageMagic
$ convert map.jpg -crop 512x512 -set filename:tile "%[fx:page.x/512]-%[fx:page.y/512]" "tiles/%[filename:tile].jpg"
Каждый тайл будет сохранен в отдельном файле с названием « x-y.jpg », где x — номер тайла по оси X, y — номер тайла по оси Y (порядковый отсчет начинается с левого верхнего тайла).
Правильнее пользоваться инструкцией самого Яндекса https://tech.yandex.ru/maps/archive/doc/jsapi/1.x/dg/concepts/ymapstiler-docpage/
Там суть такова:
- скачивайте специальную программу
- задаёте точки привязки. Дело в том, что Ваша карта скорее всего сделана не в той проекции, что у Яндекса. И чтобы это исправить, необходимо задать соответствие точек на растовой карте реальным координаторам на местности.Чем больше точек и чем они точнее, тем лучше. Сайты с онлайн определением координат можно найти в поиске.
- Программа сама сгенерирует нужные тайлы именно под Яндекс карты с нужными номерами тайлов и для нужных масштабов. Вручную это делать проблематично. Можно сгенерировать и полупрозрачные тайлы в формате PNG.
От себя:
Частенько трудно корректно привязать карту. Я лично качаю (растрирую) часть Яндекс карты, накладываю сверху свою карту в Photoshop, затем применяю марионеточную деформацию и медленно и аккуратно "натягиваю" свою карту на карту от Яндекса. А потом уже привязываю.
Рассмотрите вариант вообще не делать тайлы. Я лично по определённым причинам пришёл к такому решению.
myMap = new ymaps.Map("map1", { center: 55.03930264,82.67716136}); maprect= [ [55.03330264,82.67716136], [55.03930264,82.67716136], [55.03930264,82.69716136], [55.03330264,82.69716136]]; RastMap = new ymaps.Polygon([maprect], { }, { fillImageHref:'map.png' }); myMap.geoObjects.add(RastMap);
Для наглядности тут координаты реального проекта. Суть в том что вся не резанная, но обработанная по методу 1, карта выводится на полигон (в данном случае, прямоугольник). Координаты углов прямоугольника подбираются так, чтобы карты совпали по координатам.
Почему я делаю так? Яндекс делит всю карту на тайлы, чтобы не грузить лишние данные для не интересующей пользователя местности, особенно на больших масштабах. В тех же проектах,где нужна своя карта, пользователь обычно так и так загружает эту карту всю. Ну разве что для каждого масштаба карту не сделаешь, придётся сразу полный размер грузить.
- Для уменьшения размера файла карты, можно сохранить его в специальном формате PNG с ограниченной палитрой цветов. Это можно сделать в специальных редакторах типа PhotoShop. Ищите сохранение в PNG8. Сохранять в JPG не рекомендую, там нет прозрачности и по краю карты могут быть некрасивые белые поля.