Можно ли использовать HTML5 canvas API для пакетной генерации изображений неинтерактивно через скрипт? - PullRequest
2 голосов
/ 19 января 2012

В настоящее время, когда мне нужно создать несколько изображений для научной визуализации (обычно из файлов CSV или другого контейнера данных), я использую Python в качестве языка сценариев, а Cairo - в качестве API рисования.Это позволяет мне запускать сценарий и иметь каталог, полный файлов .png.

Хотя Cairo - очень хороший API для рисования, я вижу, что Canvas, помимо того, что он более распространенный, имеет некоторые операции (такие как наложение и перемещение)), что сделало бы возможным создание более сложной графики, помимо других потенциальных преимуществ.

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

Другая, не такая уж большая проблема - необходимость в работающем HTTP-сервере, но я думаю, что PythonSimpleHTTPServer, который должен работать нормально.

Есть идеи?

Спасибо за чтение, надеюсь, это поможет большему количеству людей в будущем.

Ответы [ 2 ]

2 голосов
/ 12 июня 2012

Как насчет PhantomJS ? У него есть метод render, который будет выводить изображения; см. Интерфейсные документы .

1 голос
/ 20 января 2012

Отличная амбициозная идея!

Есть возможность сценария открытия браузера и создания изображений;сохранить их может быть немного сложно.

Вы можете написать файл HTML, включая ваши скрипты, а затем использовать модуль webbrowser Python, чтобы открыть этот файл в окне браузера - вы можете настроитьтривиальный веб-сервер или используйте file:// URI для этого.

Установка тривиального веб-сервера может стоить того, так как поддержка XMLHttpRequests для file:// URI не гарантируется, даже в «одном домене».

Вы можете написать свой Javascript для получения произвольного (локального) URI, использовать XHR для извлечения его содержимого и обработки.Самый простой способ передать этот локальный URI - это разобрать его из фрагментированной строки - ненадежный подход, если когда-либо был, но он находит применение в Twitter, поэтому он не может быть слишком плохим, верно?

Затем визуализируйте каждое из ваших изображений на холсте и посмотрите на FileSaver * Eli Grey и ... вам может понадобиться нажать кнопку несколько раз, чтобы сохранить все ваши изображения.

Bestудачи - мне любопытно услышать, как это происходит.

...