imagegrabwindow

Вот какая мощная функция есть в >= 5.2.2 под виндой

imagegrabwindow — делает скриншот окна приложения. возвращает идентификатор изображения или false при неудачной попытке.

$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Navigate("https://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.

Вообще, наверное, надо взяться и написать универсальный интерфейс, максимально упрощающий и унифицирующий процедуру создания скринов сайта :)

Реклама

11 Responses to imagegrabwindow

  1. nopox:

    Первый нах! :)

    Субъективное мнение: COM суть зло, ибо неуниверсально и привязано к платформе. Хотя, с другой стороны, эта задача — автоматизированное создание скриншотов сайта — не имеет красивых решений.

    Вообще, если кому вдруг понадобится куча скриншотов: для Windows можно использовать утилиту url2bmp (http://www.pixel-technology.com/freeware/url2bmp), которая помимо графического имеет мощный консольный интерфейс.

    Для Unix придётся устанавливать X-server, запускать браузер и делать снимок окна посредством import из ImageMagick.

    Вообще, наверное, надо взяться и написать универсальный интерфейс, максимально упрощающий и унифицирующий процедуру создания скринов сайта :)

  2. Ничо се! А мона я это в пост допишу?

  3. Чего ты, кстати, не входишь в вордпресс перед тем как постить? сцылки нету.

    Эт. напиши, интерфейс. думаю, будет востребовано.

  4. nopox:

    Чего ты, кстати, не входишь в вордпресс перед тем как постить? сцылки нету.

    Да врёт он всё, я не разлогиниваться и не собирался :)

    Ничо се! А мона я это в пост допишу?

    Если считаешь ценным это замечение — дописывай, мне не жалко :).

    Эт. напиши, интерфейс. думаю, будет востребовано.

    Этот материал будет интересен прежде всего владельцам серверов или арендаторам дедиков, т.к. на виртуальный хостинг иксы ставить никто не даст…
    А вообще, подумать надо.

  5. i0nn:

    Написание интерфейса доступно и через сторонние программы для снятия скрина с url. Всё через сис.вызовы, минимум строк кода.
    А то, что с =>5.2.2 — зря, ком объекты доступны аж с PHP 3.0, а если покапаться то и в версии FI функции найдуться.

  6. Ну да, на крайняк мона было через winapi извернуться.

    А че такое FI?

  7. nopox:

    Написание интерфейса доступно и через сторонние программы для снятия скрина с url

    Браво! Именно со сторонними программами работать и придется :). Одно маленькое НО: интерфейсы этих программ (под Windows или Unix) ну ооочень разные. Именно их и надо будет унифицировать. Причем так, чтобы программисту не пришлось менять ни строки своей программы.

    А че такое FI?

    PHP/FI, вероятно :) Версия 2.x

  8. i0nn:

    — «winapi»
    — «ну ооочень разные»

    не ешьте мой мозг. Командная строка разной не бывает =), конечно, если в cmd напишешь ls -lRa, то он ничего не покажет, но то, что под никсами, что под виндой, консольники везде одни и те же, к тому же портированные вообще не отличаются. nmap — кто скажет, что он чем-то отличается через консоль? Запустим его на фряхе, altLinux и на w2k — разница так заметна?! Есть некоторые накладки, скажем при XP SP2 на роусокетах, но они именно преграды, но не ооочень разные. ооочень разные у них не сис.вызовы через таблицы импорта, как поймут с’шники или дельфисты, а имелось в виду вызовы через командную строку. Так мне кажется, что через консоль все портированные приложения один в один. Никакой разницы, сколько не пользовался. Разве, что «.exe».

  9. ну тогда задача еще децал сложней — зафигачить тулзу, и скомпилить ее под системы. где-то видел фаерфокс переписывали для сей задачи. Или есть готовое что?

  10. nopox:

    Командная строка разной не бывает =)

    Еще как бывает, особенно если речь идёт о разных утилитах. На Windows есть dir, на никсах — упомянутый выше ls. Проблема в том, что универсального подхода к созданию скриншотов сайтов не бывает.

    Под винду, как я уже говорил, есть url2bmp (оно, кстати, не только в bmp умеет сохранять, но и в другие форматы). Под никсы, насколько я знаю, ничего такого не придумали. Есть только решения, основанные на использовании движка Gecko или Opera Kiosk Mode. При этом задача сводилась к их запуску в пределах X-сервера и снтяие скринов экрана через import из комплекта ImageMagick.

    Как унифицировать вызов виндовой url2bmp и ряда команд (запуск X-сервера, запуск браузера с URL, снятие скриншота и, возможно, его преобразование) под никсы? Вы по-прежнему считаете, что консоль не бывает разной? :) Или предложите поставить на Windows порт X-сервера?

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: