Генератор preview thumbnails веб-страниц

Макс15 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
21.12.2009

Необхоидмо составить концепцию и реализовать генератор превью-картинок различных задаваемых веб-страниц.

На вход генератору будет подаваться список УРЛей. На выходе должны появляться маленькие картинки-скриншоты этих страниц.

Примеры того, какие именно превью имеются ввиду:

http://www.thumbshots.net/search.aspx?q=assassins+creed

http://snapcasa.com/SampleSnap.aspx

http://www.websnapr.com/

Генератор тамбнейлов страниц должен быть реализован в виде многопоточного fastcgi либо http proxy сервера (количество одновременно работающих потоков должно настраиваться в конфиг файле, ожидается, что их будет 10-20). Требования:

1. Работа в связке с nginx

Данный fastcgi/http proxy будет работать в связке с nginx+модуль кэширования (http://www.webtatic.com/blog/2008/04/page-level-caching-with-nginx/). К nginx будут приходить url на обработку в виде http://mythumbnailmaker.com/?url=http://google.com. Если для данного урла уже был сгененирован thumbnail, то он отдается из nginx кэша, иначе запрос передается fastcgi/http proxy, который генерит тамбнейл и отдает nginx-у. nginx в свою очередь отдает клиенту картинку и сохраняет ее на диск (в кэш).

2. Логика генерации тамбнейла

- изначально нужно рендерить страницу для области просмотра 1280x1024 (размеры нужно вынести в конфиг файл).

Если сайт имеет бОльшие размеры, тамбнейл должен формироваться на основе его левой верхней части.

- картинка должна уменьшаться до указанного в файле конфигурации размера (например 125x100).

- поверх картинки должен накладываться полупрозрачный png, указанный в конфиг файле

- результирующая картинка конвертируется в jpeg формат с указанным в конфиг файле качеством и отдается клиенту.

3. Загрузка документов

- Обязательно должно поддерживаться gzip сжатие загружаемого контента

- разрабатываемый сервер должен уметь загружать файлы через http proxy (настройки должны быть в конфиг файле)

- ОПЦИОНАЛЬНО НО ОЧЕНЬ ВАЖНО: оптимизация загрузки графики. Должны загружаться только те картинки, которые попадают

в область, на основе которой строится тамбнейл.

- Должна быть поддержка флешевых объектов.

4. Требования к реализации

- Разрабатываемый сервер будет работать под OC Linux.

- Конечный язык реализации и набор библиотек должне быть заранее с нами согласован

- Мы бы предпочли, чтобы разработка велась на C++ с использованием библиотек webkit/qt