2015-09-21 2 views
2

Я хочу, чтобы пользователи могли создавать высококачественные изображения для публикации с их графиков cytoscape.js (на самом деле это основной вариант использования моего приложения). Поскольку нет экспорта cytoscape.js в векторном формате, моя документация позволяет пользователям просто увеличивать до высокого уровня разрешения до экспорта в png, а затем мой код проходит в текущем значении масштабирования в качестве параметра масштаба для cy.png (), а также полный: true. Однако при достаточно больших значениях для масштаба изображение не генерируется. Это максимальное значение шкалы, по-видимому, отличается для разных графиков, поэтому я предполагаю, что оно основано на некоторых максимальных физических измерениях. Как я могу определить, какое максимальное значение шкалы должно быть для любого заданного графика, поэтому мой код не будет превышать его?Как определить максимальный масштаб для вывода cytoscape.js png?

Кроме того, если я удалил или переместил элементы таким образом, чтобы граф занимал меньше физического пространства, чем он использовал, cy.png(), кажется, включает эту пустую область в результирующем изображении, даже если она больше не содержит каких-либо элементов - Есть ли способ избежать этого?

ответ

2

По умолчанию cy.png() и cy.jpg() будут экспортировать текущий вид на изображение. Чтобы экспортировать установленный график, используйте cy.png({ full: true }) или cy.jpg({ full: true }).

Браузер обеспечивает экспорт общих ограничений размера файла. Это зависит от ОС и поставщика браузера. Cytoscape.js не может влиять и не может вычислить этот предел. Для больших разрешений/scale s разница в качестве PNG и JPG незначительна. Таким образом, JPG имеет тенденцию быть лучшим вариантом для крупного экспорта.

Кроме того: в то время как растровые форматы масштабируются с разрешением, векторные форматы, такие как (SVG) шкала с количеством элементов графика. Для больших графиков может быть невозможно экспортировать SVG (даже если такая функция была реализована).

+0

Как определить размеры полного графика, который будет использоваться для генерации png (до масштабирования)? Если я могу это определить, я могу принять решение о произвольном, но консервативном максимальном размере файла, который будет работать для наиболее общих комбинаций браузера/ОС, и определить максимальный масштабный коэффициент для любого заданного графика. –

+0

Ничего страшного - ограничивающим фактором для загрузки, по-видимому, является размер URL-адреса данных (максимальная длина = 2097100), который (поскольку это сжатый формат) не может быть получен непосредственно из размеров изображения. Похоже, я лучше всего использую позиции узлов, чтобы получить приблизительные размеры изображения и предварительный максимальный масштаб, попробуйте создать png, а затем, если он слишком велик, итерация уменьшает масштаб, пока я не получу что-то, что работает. Это по крайней мере сейчас работает на меня. –

Смежные вопросы