toDataURL () возвращает пустое изображение, если Konva не отображается - PullRequest
0 голосов
/ 07 мая 2020

У меня есть приложение, в котором Konva изначально скрыта (находится на второй «вкладке» вкладки на странице).

Когда пользователь нажимает кнопку «Сохранить» на этой странице, я ' m пытаюсь позвонить по номеру Stage.toDataURL(), чтобы получить контент в Konva. Однако, если вторая вкладка никогда не отображается, всегда возвращается пустое изображение.

  • Я пробовал вызывать Stage.draw() до Stage.toDataURL(), но этого не произошло.
  • Я также пробовал кэшировать Stage перед вызовом Stage.toDataURL() . Не повезло.
  • У меня нет изображений на холсте, поэтому ждать загрузки изображений не проблема.
  • После отображения 2-й вкладки, даже если пользователь затем переключается обратно на 1-ю вкладку и повторно скрывает Konva, тогда она работает нормально.

Это известное ограничение Konva? Что он не будет отображаться, если не будет виден?

РЕДАКТИРОВАТЬ : Разрешено

Некоторый код пытался центрировать и масштабировать Konva в своем контейнере при загрузке страницы. Поскольку контейнер еще не был виден, его ширина и высота были равны 0. Это заставило код установить ширину и высоту Konva Stage на отрицательные числа. Как только я это предотвратил, он смог нормально экспортировать изображение, даже если оно было скрыто.

1 Ответ

1 голос
/ 07 мая 2020

Это решено. Некоторый код пытался центрировать и масштабировать Konva в своем контейнере при загрузке страницы. Поскольку контейнер еще не был виден, его ширина и высота были равны 0. Это заставило код установить ширину и высоту Konva Stage на отрицательные числа. Как только я это предотвратил, он смог нормально экспортировать изображение, даже если оно было скрыто.

...