PHP使用GD庫實現截屏
PHP5.2.2以上版本的GD庫實現了兩個截屏函數 imagegrabscreen 和 imagegrabwindow
分別用於截取整個屏幕和截取某個窗口(同ALT+PrintScreen)的屏幕。
1. 截取整個屏幕 Screenshot
<?php
$im = imagegrabscreen () ;
imagepng ( $im , " myscreenshot.png " ) ;
?>
2. 截取一個窗口 Capture a window (IE for example)
<?php
$browser = new COM ( " InternetExplorer.Application " ) ;
$handle = $browser -> HWND ;
$browser -> Visible = true ;
$im = imagegrabwindow ( $handle ) ;
$browser -> Quit () ;
imagepng ( $im , " iesnap.png " ) ;
$im = imagegrabscreen () ;
?>
3. 截取IE內容 Capture a window (IE for example) but with its content!
<?php
$browser = new COM ( " InternetExplorer.Application " ) ;
$handle = $browser -> HWND ;
$browser -> Visible = true ;
$browser -> Navigate ( " http://www.21andy.com/blog/ " ) ;
/* Still working? */
while ( $browser -> Busy ) {
com_message_pump ( 4000 ) ;
}
$im = imagegrabwindow ( $handle , 0 ) ;
$browser -> Quit () ;
imagepng ( $im , " iesnap.png " ) ;
?>
4. 截取IE的全屏模式 IE in fullscreen mode
<?php
$browser = new COM ( " InternetExplorer.Application " ) ;
$handle = $browser -> HWND ;
$browser -> Visible = true ;
$browser -> FullScreen = true ;
$browser -> Navigate ( " http://www.21andy.com/blog/ " ) ;
/* Is it completely loaded? (be aware of frames!)*/
while ( $browser -> Busy ) {
com_message_pump ( 4000 ) ;
}
$im = imagegrabwindow ( $handle , 0 ) ;
$browser -> Quit () ;
imagepng ( $im , " iesnap.png " ) ;
?>
I use Internet Example Explorer as example, if you like to play more with IE and com, check out the IBrowser2 documentation at MSDN. It should work with any kind of window as long as you give the correct handle (usually $obj->HWND).
* php_gd2.dll for 5.2.x thread safe build
* php gd image documentation
* IE manual (useful to tweak it from com_dotnet
在測試過程中我並沒有出現手冊中說的那種效果,而是一張純黑的圖片,這是為什麼呢?
可能有兩種情況,第一種情況就是這個COM組件只適用於WINDOWS服務器,因為他沒有IE浏覽器;第二種情況就是沒有打開允許服務與桌面交互!其中第二種情況最為常見(默認是關閉的),打開的方法:點擊計算機(我的電腦) -> 右鍵 -> 管理 -> 服務和應用程序 -> 服務 -> Apache -> 右鍵 -> 屬性 -> 登錄 -> 選中允許服務與桌面交互。
如果是第二種情況的話,我安裝的是apache集成包,這樣的話就找不到apache的服務在哪裡,所以第二種方法的設置我沒有成功,如有成功者,希望指點一下。
摘自 張大鵬