Поисковая форма:) поиск по free-lance.ru Топ/история/обновления фриланса, по разным параметрам (темы, сообщения, пользователи...) Автоматическое удаление постов от ненужных юзеров в топике (php скрипт) Досье(точный ник)
 

Ник (или часть ника):
?
Какой текст ищем:
?
Раздел блогов:
За срок
дней
Тип поиска: (по вхождению: по тексту гуг выдаст посты с "гуг", "гугл", "огугл"; "полнотекстовый": по тексту "гуг" выдаст посты только с "гуг")
По вхождению строки:  Полнотекстовый: 
(поиск не 100% актуальный, есть определённая задержка при обновлении данных для поиска. )
0 Всего найдено: 6
gipper2006 Сообщение 28/06/2009 18:02 Копия темы
изображения в PHP  . возможно ли в РНР конвертировать HTML страницу в изображение .jpg? Чтобы можно было сгенерированную страницу сохранить в графическом формате. Существуют ли какие-нибудь варианты решения?
sun4es Сообщение 28/06/2009 18:06 Копия темы
 .
реализовать на PHP систему для рендеринга HTML? так и до браузера на PHP недалеко x)
 

FlexMaster Сообщение 28/06/2009 18:09 Копия темы
 .
Существуют достаточно простые пути решения, но доступные на выделенном сервере.... или на ВПС.... PHP не обязателен...
 

raznomir Сообщение 28/06/2009 18:16 Копия темы
 .
Ничего особо нереального не вижу, но именно готового скрипта не встречал – не искал просто )))
 

xadminx Сообщение 28/06/2009 18:46 Копия темы
http://habrahabr.ru/blogs/php/ 62965/  .
Бродя по просторам PHP документации случайно наткнулся на две функции: imagegrabwindow и imagegrabscreen. Они умеют делать скриншоты в Microsoft Windows.
Заинтересовало. Кончилось дело тем, что был написан скриптик генерирующий полный скриншот любого сайта.
Итак нам необходимы:

* Internet Explorer ActiveX component и документация к нему.
* PHP 5.2.2+



В функции imagegrabwindow дан неплохой пример по использованию.

$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Navigate("www.libgd.org");

/* Still working? */
while ($browser->Busy) {
com_message_pump(4000);
}
$im = imagegrabwindow($handle, 0);
$browser->Quit();
imagepng($im, "iesnap.png");
imagedestroy($im);

* This source code was highlighted with Source Code Highlighter.



Но он обладает большим недостатком — какого размера открылось окошко браузера, такой мы и получим скриншот.
Дабы исправить это пришлось написать скрипт, который дополнительно делает следующие вещи:

* Раскрывает окно браузера на весь экран в полноэкранном режиме
* Отключает полосу состояния
* Затирает скроллинг
* Делает необходимое число скриншотов страницы с помощью прокрутки страницы и объединяет их


Кодяра

<?php
$browser = new COM("InternetExplorer.Application");
$browser->Visible = true;
$browser->Fullscreen = true;
$browser->StatusBar = false;

$browser->Navigate("www.habrahabr.ru");
while ($browser->Busy)
com_message_pump(4000);

$handle = $browser->HWND;
$screenWidth = $browser->Width;
$screenHeight = $browser->Height;
$documentHeight = $browser->Document->body->scrollHeight;

$scrollWidth = 20;
$scrollHeight = 20;
$testPartSize = 10*1024;

$im = imagecreatetruecolor($screenWidth – $scrollWidth, $documentHeight);
for($top = 0; $top < $documentHeight; $top += $screenHeight)
{
$browser->Document->documentElement->scrollTop=$top;
while ($browser->Busy)
com_message_pump(4000);
echo $browser->Document->documentElement->scrollTop.PHP_EOL;

for($i = 0; $i < 5; $i++)
{
$part = imagegrabwindow($handle, 0);
$dark = imagecolorallocate($part, 0, 0, 0);
imagefilledrectangle($part, $screenWidth – $scrollWidth, 0, $screenWidth, $screenHeight, $dark);
$testFile = sprintf("screenshot_%05d.png", $top);
imagepng($part, $testFile, 9, PNG_ALL_FILTERS);
clearstatcache();
if(filesize($testFile) > $testPartSize)
break;

echo "Bad part, name: {$testFile}, try to generate again.".PHP_EOL;
}

imagecopy(
$im, $part,
0, $top,
0, (!$top || ($top + $screenHeight) < $documentHeight) ? 0 : $screenHeight – $scrollHeight – $documentHeight % $screenHeight,
$screenWidth – $scrollWidth, $screenHeight);
imagedestroy($part);
}
imagepng($im, "screenshot.png", 9, PNG_ALL_FILTERS);
imagedestroy($im);

$browser->Quit();

* This source code was highlighted with Source Code Highlighter.



Замечания к коду

* Иногда по непонятным причинам делается скриншот, а там чёрный экран, дабы устранить это делается запись снятого куска в файл с затёртым скроллингом, а затем проверяется размер файла. Если файл мал, скорее всего надо переснять.
* При желании быстро протестить, можно воспользоваться следующем командной строкой:

php -d extension_dir=c:\php\ext\ -d extension=php_gd2.dll ie.php

где ie.php — скрипт выше.
* Можно из под апача запускать, но для этого надо менять настройки безопасности. В документации к этим функциям написано что делать.



А как в других браузерах

Для FireFox нашёл Embedded Mozilla раздел, к сожалению требует кодирования, но при написании полноценного сервиса получится гораздо эффективнее.
 

devimpress Сообщение 28/06/2009 19:39 Копия темы
 .
Можно еще так – relabs.ru/archives/27
 

0

©2008 edogs egods
Выразить восторг, поругаться
или предложить что-нибудь можно на форуме
Для обсуждения этого сервиса так же есть темы на фрилансе по
поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал"