Вот какая мощная функция есть в >= 5.2.2 под виндой
imagegrabwindow – делает скриншот окна приложения. возвращает идентификатор изображения или false при неудачной попытке.
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Navigate("http://jeka911.wordpress.com");
/* Still working? */
while ($browser->Busy) {
com_message_pump(4000);
}
$im = imagegrabwindow($handle, 0);
$browser->Quit();
imagepng($im, "iesnap.png");
И получается скриншот сайта с php.
Опа, какой мощный комментарий от nopox’a:
Первый нах! :)
Субъективное мнение: COM суть зло, ибо неуниверсально и привязано к платформе. Хотя, с другой стороны, эта задача — автоматизированное создание скриншотов сайта — не имеет красивых решений.
Вообще, если кому вдруг понадобится куча скриншотов: для Windows можно использовать утилиту url2bmp (http://www.pixel-technology.com/freeware/url2bmp), которая помимо графического имеет мощный консольный интерфейс.
Для Unix придётся устанавливать X-server, запускать браузер и делать снимок окна посредством import из ImageMagick.
Вообще, наверное, надо взяться и написать универсальный интерфейс, максимально упрощающий и унифицирующий процедуру создания скринов сайта :)
Сентябрь 19, 2007 в 10:23 пп |
Первый нах! :)
Субъективное мнение: COM суть зло, ибо неуниверсально и привязано к платформе. Хотя, с другой стороны, эта задача — автоматизированное создание скриншотов сайта — не имеет красивых решений.
Вообще, если кому вдруг понадобится куча скриншотов: для Windows можно использовать утилиту url2bmp (http://www.pixel-technology.com/freeware/url2bmp), которая помимо графического имеет мощный консольный интерфейс.
Для Unix придётся устанавливать X-server, запускать браузер и делать снимок окна посредством import из ImageMagick.
Вообще, наверное, надо взяться и написать универсальный интерфейс, максимально упрощающий и унифицирующий процедуру создания скринов сайта :)
Сентябрь 19, 2007 в 10:45 пп |
Ничо се! А мона я это в пост допишу?
Сентябрь 19, 2007 в 10:47 пп |
Чего ты, кстати, не входишь в вордпресс перед тем как постить? сцылки нету.
Эт. напиши, интерфейс. думаю, будет востребовано.
Сентябрь 19, 2007 в 11:40 пп |
Да врёт он всё, я не разлогиниваться и не собирался :)
Если считаешь ценным это замечение — дописывай, мне не жалко :).
Этот материал будет интересен прежде всего владельцам серверов или арендаторам дедиков, т.к. на виртуальный хостинг иксы ставить никто не даст…
А вообще, подумать надо.
Сентябрь 19, 2007 в 11:48 пп |
Написание интерфейса доступно и через сторонние программы для снятия скрина с url. Всё через сис.вызовы, минимум строк кода.
А то, что с =>5.2.2 – зря, ком объекты доступны аж с PHP 3.0, а если покапаться то и в версии FI функции найдуться.
Сентябрь 20, 2007 в 12:29 дп |
Ну да, на крайняк мона было через winapi извернуться.
А че такое FI?
Сентябрь 20, 2007 в 1:09 дп |
Браво! Именно со сторонними программами работать и придется :). Одно маленькое НО: интерфейсы этих программ (под Windows или Unix) ну ооочень разные. Именно их и надо будет унифицировать. Причем так, чтобы программисту не пришлось менять ни строки своей программы.
PHP/FI, вероятно :) Версия 2.x
Сентябрь 20, 2007 в 1:15 дп |
аа, ну вы даете.
Сентябрь 20, 2007 в 10:21 пп |
- «winapi»
- «ну ооочень разные»
не ешьте мой мозг. Командная строка разной не бывает =), конечно, если в cmd напишешь ls -lRa, то он ничего не покажет, но то, что под никсами, что под виндой, консольники везде одни и те же, к тому же портированные вообще не отличаются. nmap – кто скажет, что он чем-то отличается через консоль? Запустим его на фряхе, altLinux и на w2k – разница так заметна?! Есть некоторые накладки, скажем при XP SP2 на роусокетах, но они именно преграды, но не ооочень разные. ооочень разные у них не сис.вызовы через таблицы импорта, как поймут с’шники или дельфисты, а имелось в виду вызовы через командную строку. Так мне кажется, что через консоль все портированные приложения один в один. Никакой разницы, сколько не пользовался. Разве, что «.exe».
Сентябрь 21, 2007 в 12:19 дп |
ну тогда задача еще децал сложней – зафигачить тулзу, и скомпилить ее под системы. где-то видел фаерфокс переписывали для сей задачи. Или есть готовое что?
Сентябрь 21, 2007 в 1:59 пп |
Еще как бывает, особенно если речь идёт о разных утилитах. На Windows есть
dir, на никсах — упомянутый вышеls. Проблема в том, что универсального подхода к созданию скриншотов сайтов не бывает.Под винду, как я уже говорил, есть url2bmp (оно, кстати, не только в bmp умеет сохранять, но и в другие форматы). Под никсы, насколько я знаю, ничего такого не придумали. Есть только решения, основанные на использовании движка Gecko или Opera Kiosk Mode. При этом задача сводилась к их запуску в пределах X-сервера и снтяие скринов экрана через import из комплекта ImageMagick.
Как унифицировать вызов виндовой url2bmp и ряда команд (запуск X-сервера, запуск браузера с URL, снятие скриншота и, возможно, его преобразование) под никсы? Вы по-прежнему считаете, что консоль не бывает разной? :) Или предложите поставить на Windows порт X-сервера?