Вопрос

У меня есть требование к проекту, чтобы сделать HTML и захватить отображаемое изображение в качестве файла на сервере без головы CentOS 5.4. Мои конкретные требования:

1) Вход будет URL на страницу для рендеринга (или файла: // URL в локальный HTML-файл), вывод будет файлом изображения, содержащий отображаемый образ страницы.
2) CSS должен поддерживаться рендерером до уровня CSS-1
3) Статические изображения на странице должны быть правильно отображаться в представленном изображении, включая любой прозрачный цвет в файлах .gif или .png
4) Должен быть в состоянии запустить на сервере без головы без головы.
5) Решение не должно зависеть от любого продукта или компонента, который не является бесплатным для коммерческого использования

Мне не нужно ничего делать со страницей, отличной от того, чтобы получить захват экрана и сохранить его к изображению. Тяжелая часть, кажется, делает это в безголовой среде. Некоторые из решений, которые я видел, обсуждал, нужен дисплей для того, чтобы работать.

Какие-либо предложения?

Спасибо заранее, Джим

Решение: я закончил использовать стандартную библиотеку инструментов Widget (www.eclipse.org/swt) для его встроенных возможностей браузера. Это позволило мне программно открывать окно с помощью управления браузером в нем, отобразите страницу, затем захватите содержимое окна в файл изображения (обычно PNG). Единственный недостаток этого подхода, который нельзя избежать, - это «мерцание», когда окно должно быть видимым на мгновение, чтобы сделать захват экрана. Я могу жить с этим. В остальном был просто код для инициализации объектов SWT, которые получают системные ресурсы, слушателя, чтобы проверить успешное завершение нагрузки страницы, а какой-то код для очистки подвесного соединения (когда нагрузка страницы никогда не завершается по какой-либо причине).

Я получил товарищ по команде, чтобы играть с XVFB (X Virtual Carmbuffer) на Centos Linux. Первоначальные тесты, по-видимому, работают, поэтому он выглядит как совет от плаката ниже (который сказал, что попробую XVFB) может быть жизнеспособным решением для серверной части безголового сервера.

Это было полезно?

Решение

Вы можете начать виртуальную среду X-Windows с помощью XVFB. Теперь вы можете запустить обычный браузер для визуализации страницы и использовать утилиту ScreenceTture для захвата содержимого окна. Это не красиво, но Straghtforward, чтобы сделать.

WebKit - это открытый источник и встроен, может быть, вы можете использовать это в небольшом нативном приложении, чтобы рендер на холсте и сохранить его на диск?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top