如何用PHP实现网页截图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用PHP实现网页截图相关的知识,希望对你有一定的参考价值。

代码如下:

<?php
set_time_limit(60);
//截屏
$im = imagegrabscreen();
imagepng($im, "snap1.png");
//抓取IE窗口
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$im = imagegrabwindow($handle);
$browser->Quit();
imagepng($im, "snap2.png");
$im = imagegrabscreen();
//抓取IE窗口及窗口内容(IE为例)
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Navigate("http://www.baidu.com");
while ($browser->Busy) 
com_message_pump(4000);

$im = imagegrabwindow($handle, 0);
$browser->Quit();
imagepng($im, "snap3.png");
// IE全屏模式
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->FullScreen = true;
$browser->Navigate("http://www.baidu.com");
while ($browser->Busy) 
com_message_pump(4000);

$im = imagegrabwindow($handle, 0);
$browser->Quit();
imagepng($im, "snap4.png");
//生成网站缩略图
$browser = new COM("InternetExplorer.Application");
$handle = $browser->HWND;
$browser->Visible = true;
$browser->Fullscreen = true;
$browser->Navigate("http://www.baidu.com");
while ($browser->Busy) 
    com_message_pump(4000);    //等待4秒

$im = imagegrabwindow($handle, 0); //抓取网页图像,需要php5.2.2以上版本的支持
$browser->Quit();
$new_img = imagecreatetruecolor(200,150);
imagecopyresampled($new_img,$im,0,0,0,0,200,150,1024,768);
imagejpeg($new_img , 'snap5.jpg',100);
imagedestroy($new_img);
echo "Done!";
?>

参考技术A 方法和步骤
1如果是在linux下建议使用phantomjs进行截图十分简单, php应该不容易实现。
2因为截图需要先有地方把整个页面解析后渲染出来才能够截图。
3可以利用phantomjs写服务器的js脚本然后用php调用就OK。
参考技术B PHP 后端语言,在你看到网页的时候,他已经结束了执行(将代码转化为html语言并呈现到你的浏览器上)。

哪位高手知道如何用安卓编程访问指定网页(求详细代码)

android中可以用webview来加载指定网页,WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页,实现WebView有以下两种不同的方法:
第一种方法的步骤:
1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);
2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
互联网用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.调用Activity的setContentView( )方法来显示网页视图
4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET" />

第二种方法的步骤:
1、在布局文件中声明WebView
2、在Activity中实例化WebView
3、调用WebView的loadUrl( )方法,设置WevView要显示的网页
4、为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置 WebView视图
5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
6、需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET"/>
参考技术A package yy.cn;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class wangluo extends Activity 
    
/** Called when the activity is first created. */
private WebView webview;

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.wangl);
        
        webview =(WebView)findViewById(R.id.web);
       
        webview.getSettings().setJavaScriptEnabled(true);//设置WebView属性,能够执行Javascript脚本
        
        webview.loadUrl("http://www.baidu.com/");//加载需要显示的网页
        
        webview.setWebViewClient(new WebViewClient()
         public boolean shouldOverrideUrlLoading(WebView view,String url)
         view.loadUrl(url);
         return true;
        
        
        );
    
    
    //设置回退
    public boolean onKeyDown(int keyCode,KeyEvent event)
     if((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) 
     webview.goBack();
     return true;
    
     return super.onKeyDown(keyCode, event);
    
    

参考技术B 这个问题好朦胧,沟通很重

以上是关于如何用PHP实现网页截图的主要内容,如果未能解决你的问题,请参考以下文章

如何用Python实现网页按钮的自动点击

如何用html编写一个简单的网页

python实现网页/HTML截图并转PDF

python实现网页/HTML截图并转PDF

python实现网页/HTML截图并转PDF

python实现网页/HTML截图并转PDF