精华内容
下载资源
问答
  • 网页快照实现(C)

    2008-06-07 15:30:56
    用C实现抓取网页快照
  • 引言 ...实现网页快照主要有phantomjs、selenium,但是网上资料都是零碎的,本文主要采用Selenium,详细阐述从编码到部署的整个流程. 一、添加Selenium依赖 <dependency> <groupId>o...

    引言

    在监控系统、网页爬虫、审核流程等领域,经常需要保存系统在某一时刻的状态-网页快照。实现网页快照主要有phantomjs、selenium,但是网上资料都是零碎的,本文主要采用Selenium,详细阐述从编码到部署的整个流程.

    一、添加Selenium依赖

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.11.0</version>
    </dependency>
    

    二、实现网页快照

    (1) 创建WebDriver

    a.手机设备

    public WebDriver createWebDriver(String device) {
        Map<String, String> mobileEmulation = new HashMap<String, String>();
        //设置设备,例如:Google Nexus 7/Apple iPhone 6
        //mobileEmulation.put("deviceName", "Google Nexus 7");
        if(StringUtils.isBlank(device))
            device = "iPhone 6";
        mobileEmulation.put("deviceName", device);   //这里是要使用的模拟器名称,就是浏览器中模拟器中的顶部型号
        Map<String, Object> chromeOptions = new HashMap<String, Object>();
        chromeOptions.put("mobileEmulation", mobileEmulation);
        DesiredCapabilities capabilities = DesiredCapabilities.chrome();
        capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);
        WebDriver driver = new ChromeDriver(capabilities);
        Dimension dimension = new Dimension(420, 900);
        driver.manage().window().setSize(dimension);
        return driver;
    }

    b.PC设备

    public WebDriver createWebDriver(String device) {
        //暂时采用特定分辨率
        ChromeOptions options = new ChromeOptions();
        options.addArguments("window-size=1200,800");
        WebDriver driver = new ChromeDriver(options);
        driver.manage().window();
        return driver;
    }
    

    (2) 绘制图像

        public String execute(String uri, String device) {
            PerfCounter.count("miui_ad_schedule_capture.execute.total", 1L);
            long start = System.currentTimeMillis();
            System.setProperty("webdriver.chrome.driver", "/home/rd/chromedriver");
            //windows: System.setProperty("webdriver.chrome.driver", "src/main/resources/driver/chromedriver.exe");
            WebDriver driver = createWebDriver(device);
            String cdnUrl = "";
            try {
                driver.get(uri);
                cdnUrl = savePage(driver, url, "capture_" + System.currentTimeMillis() + ".png");
            } catch (Exception e) {
                logger.error("capture fail: [{},{}],{} !", uri ,device,e);
            } finally {
                driver.close();
                driver.quit();
            }
            PerfCounter.count("miui_ad_schedule_capture.execute.success", 1L, System.currentTimeMillis() - start);
            return cdnUrl;
        }
    
        private String savePage(WebDriver driver, String filePath, String fileName) throws IOException, InterruptedException, NoSuchAlgorithmException {
            JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
            TakesScreenshot takesScreenshot = (TakesScreenshot) driver;
            jsExecutor.executeScript("window.scrollTo(0,0)");
            BufferedImage imageOriginal = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);// 创建全屏截图
            int lastScroll = -1;
            int currentScroll = 0;
            Thread.sleep(1000);
            while (lastScroll != currentScroll) {
                byte[] bytesScroll = takesScreenshot.getScreenshotAs(OutputType.BYTES);
                BufferedImage imageScroll = ImageIO.read(new ByteArrayInputStream(bytesScroll));
                int screenHeight = imageScroll.getHeight();
                int screenWidth = imageScroll.getWidth();
                System.out.println("scree:" + screenHeight + ":" + screenWidth);
    
                BufferedImage combined = new BufferedImage(screenWidth, currentScroll + screenHeight, BufferedImage.TYPE_INT_RGB);
                Graphics g = combined.getGraphics();
                g.drawImage(imageOriginal, 0, 0, null);
                g.drawImage(imageScroll, 0, currentScroll, null);
                imageOriginal = combined;
    
                logger.info("lastScroll:" + lastScroll + "    currentScroll:" + currentScroll + "    screenHeight:" + screenHeight);
                int scrollTo = currentScroll + screenHeight;
                lastScroll = currentScroll;
                jsExecutor.executeScript("window.scrollTo(0," + scrollTo + ")");
                currentScroll = Double.valueOf(jsExecutor.executeScript("return document.documentElement.scrollTop").toString()).intValue();
                System.out.println(screenHeight + ":" + scrollTo);
                if (lastScroll > 5000) {
                    break;
                }
                Thread.sleep(1000);
            }
    
            File path = new File(filePath);
            if (!path.exists() || !path.isDirectory()) {
                path.mkdirs();
            }
            File file = new File(path.getAbsolutePath() + File.separatorChar + fileName);
            ImageIO.write(imageOriginal, "png", file);
            String uploadPath = FileStorageUtils.upload(file.getAbsolutePath(), CHANNEL_ID);
            System.out.println("uploadPath:" + uploadPath);
            if(file.exists()){
                file.delete();
            }
            return uploadPath;
        }

    三、部署(ubantu16.04)

    (1) 安装chrome

    sudo apt-get install libxss1 libappindicator1 libindicator7 #install dependency
    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo dpkg -i google-chrome*.deb  
    sudo apt-get install -f

    安装完成后测试:

    google-chrome --headless --remote-debugging-port=9222 https://chromium.org --disable-gpu

    这里是使用headless模式进行远程调试,ubuntu上大多没有gpu,所以--disable-gpu以免报错。之后使用另一个命令行访问本地的9222端口:

    curl http://localhost:9222

    能够看到调试信息应该就是安装成功了

    (2) 下载chromedriver

    chromedriver提供了操作chrome的api,是selenium控制chrome的桥梁。
    可以到:https://sites.google.com/a/ch...
    下载并解压:

    wget https://chromedriver.storage.googleapis.com/2.37/chromedriver_linux64.zip
    unzip chromedriver_linux64.zip

    Chrome与WebDriver的版本对应关系:

    chromedriver版本支持的Chrome版本
    v2.37v64-66
    v2.36v63-65
    v2.35v62-64
    v2.34v61-63
    v2.33v60-62
    v2.32v59-61
    v2.31v58-60
    v2.30v58-60
    v2.29v56-58
    v2.28v55-57
    v2.27v54-56
    v2.26v53-55
    v2.25v53-55
    v2.24v52-54
    v2.23v51-53
    v2.22v49-52
    v2.21v46-50
    v2.20v43-48
    v2.19v43-47
    v2.18v43-46
    v2.17v42-43
    v2.13v42-45
    v2.15v40-43
    v2.14v39-42
    v2.13v38-41
    v2.12v36-40
    v2.11v36-40
    v2.10v33-36
    v2.9v31-34
    v2.8v30-33
    v2.7v30-33
    v2.6v29-32
    v2.5v29-32
    v2.4v29-32

    (3) 安装Xfvb

    如果不安装Xfvb,java -jar xxx.jar 将报一下错误:

    Starting ChromeDriver 2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57) on port 14103
    Only local connections are allowed.
    Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
      (Driver info: chromedriver=2.30.477691 (6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 4.9.15-x86_64-linode81 x86_64) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 60.13 seconds
    Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
    System info: host: 'localhost', ip: '127.0.0.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.9.15-x86_64-linode81', java.version: '1.8.0_131'
    Driver info: driver.version: ChromeDriver
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        ...

    安装方式:
    a.安装Xvfb

    sudo apt install Xvfb

    b.启动Xvfb服务

    Xvfb -ac :7 -screen 0 1280x1024x8 &

    c.连接服务7

    export DISPLAY=:7
    关于Xvfb的具体应用请参考:https://www.x.org/archive/X11R7.6/doc/man/man1/Xvfb.1.xhtml
    

    参考链接:
    https://blog.csdn.net/codebat...
    https://jiayi.space/post/zai-...

    博客编写不易,如果觉得写得可以,请帮忙点个赞

    展开全文
  • PHP网页截图-网页快照实现

    千次阅读 2013-04-23 11:25:38
    单纯使用PHP很难实现,还好在有个比较适中的解决方案: CutyCapt的说明地址:http://cutycapt.sourceforge.net/ 不过要求主机环境的支持: Linux : 要求安装了qt或x-server Windows:要求安装了IE(^_…) 主要介绍...


    单纯使用PHP很难实现,还好在有个比较适中的解决方案:
    CutyCapt的说明地址:http://cutycapt.sourceforge.net/

    不过要求主机环境的支持:
    Linux : 要求安装了qt或x-server
    Windows:要求安装了IE(^_…)


    主要介绍Windows环境 :
    1.下载 CutyCapt-Win32-2008-06-11.zip (6MB, .exe for Win32 systems)
    2.程序

    function makeImg($url){
    	  $dir = $_SERVER['DOCUMENT_ROOT']."/caiji"; //建立一个基础目录
    	  $imgpath = $dir . "/shot";                 //快照输出目录
    	  $exepath = $dir . "/CutyCapt.exe";         //exe文件安放目录
    	  
    	  if($url==""){exit;}
    	  
    	  $filename=date("Ymdhis").rand(100,200).".png";
    	  $out=$imgpath."/".$filename;              //快照随机文件名
    	  system("$exepath --url=$url --out=$out"); //执行快照命令
    	  return $filename;
      }


     

    展开全文
  • 两种方式实现网页快照,快速截屏网页,不必打开浏览器
  • 主要介绍了Shell脚本实现获取网页快照并生成缩略图,本文获取网页快照使用phantomjs、生成缩略图使用ImageMagick,需要的朋友可以参考下
  • DJNativeSwing实现网页快照相关jar包 1、DJNativeSwing-SWT.jar,DJNativeSwing.jar,swt-3.6M3-win32-win32-x86.jar 2、本人已经测试成功 网页快照方法在这里: ...
  • 解压后先把依赖包加到pom中,然后再执行代码测试。利用Jwebbrower实现网页快照(完整的),很多查到的资料要么只有电脑桌面这么大要么就截不完整。本工具截一条百度新闻页实测效果还是比较好的。
  • IECapt实现网页快照

    2014-01-23 16:55:04
    IECapt可以将捕获网页,生成BMP、JPEG 或 PNG格式的图片,不足是依赖于Internet Explorer,这就决定了它只能在Windows下使用。IECapt是一个命令行工具,通过指定的url,利用ie内核,即可将其图片截取下来。 示例地址...
  • 网页快照 java 实现

    千次阅读 2011-02-25 13:38:00
     JFrame frame = new JFrame("以DJ组件保存指定网页截图");  // 加载google,最大保存为640x480的截图  frame.getContentPane().add(  new Main(" http://blog.csdn.net/cping1982 ", 1024, 768),  ...

    cping1982 大哥真的很厉害愿意开源写代码给大家 先在的优秀程序员能想他一样的真少见 敬礼

    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.FlowLayout;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;

    import javax.imageio.ImageIO;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.SwingUtilities;

    import chrriis.dj.nativeswing.swtimpl.NativeComponent;
    import chrriis.dj.nativeswing.swtimpl.NativeInterface;
    import chrriis.dj.nativeswing.swtimpl.components.JWebBrowser;
    import chrriis.dj.nativeswing.swtimpl.components.WebBrowserAdapter;
    import chrriis.dj.nativeswing.swtimpl.components.WebBrowserEvent;

    public class Main extends JPanel {
     /**
      *
      */
     private static final long serialVersionUID = 1L;

     // 行分隔符
     final static public String LS = System.getProperty("line.separator", "/n");

     // 文件分割符
     final static public String FS = System.getProperty("file.separator", "//");

     //以javascript脚本获得网页全屏后大小
     final static StringBuffer jsDimension;
     
     static {
      jsDimension = new StringBuffer();
      jsDimension.append("var width = 0;").append(LS);
      jsDimension.append("var height = 0;").append(LS);
      jsDimension.append("if(document.documentElement) {").append(LS);
      jsDimension.append(
          "  width = Math.max(width, document.documentElement.scrollWidth);")
        .append(LS);
      jsDimension.append(
          "  height = Math.max(height, document.documentElement.scrollHeight);")
        .append(LS);
      jsDimension.append("}").append(LS);
      jsDimension.append("if(self.innerWidth) {").append(LS);
      jsDimension.append("  width = Math.max(width, self.innerWidth);")
        .append(LS);
      jsDimension.append("  height = Math.max(height, self.innerHeight);")
        .append(LS);
      jsDimension.append("}").append(LS);
      jsDimension.append("if(document.body.scrollWidth) {").append(LS);
      jsDimension.append(
        "  width = Math.max(width, document.body.scrollWidth);")
        .append(LS);
      jsDimension.append(
        "  height = Math.max(height, document.body.scrollHeight);")
        .append(LS);
      jsDimension.append("}").append(LS);
      jsDimension.append("return width + ':' + height;");
     }

     public Main(final String url, final int maxWidth, final int maxHeight) {
      super(new BorderLayout());
      JPanel webBrowserPanel = new JPanel(new BorderLayout());
      final String fileName = System.currentTimeMillis() + ".jpg";
      final JWebBrowser webBrowser = new JWebBrowser(null);
      webBrowser.setBarsVisible(false);
      webBrowser.navigate(url);
      webBrowserPanel.add(webBrowser, BorderLayout.CENTER);
      add(webBrowserPanel, BorderLayout.CENTER);

      JPanel panel = new JPanel(new FlowLayout(FlowLayout.CENTER, 4, 4));

      webBrowser.addWebBrowserListener(new WebBrowserAdapter() {

       // 监听加载进度
       public void loadingProgressChanged(WebBrowserEvent e) {
        // 当加载完毕时
        if (e.getWebBrowser().getLoadingProgress() == 100) {
         String result = (String) webBrowser
           .executeJavascriptWithResult(jsDimension.toString());
         int index = result == null ? -1 : result.indexOf(":");
         NativeComponent nativeComponent = webBrowser
           .getNativeComponent();
         Dimension originalSize = nativeComponent.getSize();
         Dimension imageSize = new Dimension(Integer.parseInt(result
           .substring(0, index)), Integer.parseInt(result
           .substring(index + 1)));
         imageSize.width = Math.max(originalSize.width,
           imageSize.width + 50);
         imageSize.height = Math.max(originalSize.height,
           imageSize.height + 50);
         nativeComponent.setSize(imageSize);
         BufferedImage image = new BufferedImage(imageSize.width,
           imageSize.height, BufferedImage.TYPE_INT_RGB);
         nativeComponent.paintComponent(image);
         nativeComponent.setSize(originalSize);
         // 当网页超出目标大小时
         if (imageSize.width > maxWidth
           || imageSize.height > maxHeight) {
          //截图部分图形
          image = image.getSubimage(0, 0, maxWidth, maxHeight);
          /*此部分为使用缩略图
          int width = image.getWidth(), height = image
           .getHeight();
           AffineTransform tx = new AffineTransform();
          tx.scale((double) maxWidth / width, (double) maxHeight
            / height);
          AffineTransformOp op = new AffineTransformOp(tx,
            AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
          //缩小
          image = op.filter(image, null);*/
         }
         try {
          // 输出图像
          ImageIO.write(image, "jpg", new File(fileName));
         } catch (IOException ex) {
          ex.printStackTrace();
         }
         // 退出操作
         System.exit(0);
        }
       }
      }

      );
      add(panel, BorderLayout.SOUTH);

     }

     public static void main(String[] args) {
      NativeInterface.open();
      SwingUtilities.invokeLater(new Runnable() {
       public void run() {
        // SWT组件转Swing组件,不初始化父窗体将无法启动webBrowser
        JFrame frame = new JFrame("以DJ组件保存指定网页截图");
        // 加载google,最大保存为640x480的截图
        frame.getContentPane().add(
          new Main("http://blog.csdn.net/cping1982", 1024, 768),
          BorderLayout.CENTER);
        frame.setSize(800, 600);
        // 仅初始化,但不显示
        frame.invalidate();
        frame.pack();
        frame.setVisible(false);
       }
      });
      NativeInterface.runEventPump();
     }

    }

    展开全文
  • JAVA实现网页快照 存为图片格式

    千次阅读 2018-11-07 12:27:02
    JAVA实现网页快照 存为图片格式

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   
    截取的google的效果,将就吧,不是特别好。 但是作为普通的应用,我想这个效果我已经很满意了。
    注意,里面的
    this.setVisible(true);
    这句话如果运行在一些不能显示图形界面的机器上,请屏蔽掉它,不过这样的话,网页里的图片就不能被截取了。


    效果图:



    完整的源代码如下:
    1. import java.awt.Graphics2D;
    2. import java.awt.RenderingHints;
    3. import java.awt.geom.AffineTransform;
    4. import java.awt.image.BufferedImage;
    5. import java.awt.image.ColorModel;
    6. import java.awt.image.WritableRaster;
    7. import java.io.*;
    8. import javax.imageio.*;
    9. import javax.swing.*;

    10. /**
    11.  * HTML2JPG,HTML页面转图片的实现方法。
    12.  * 
    13.  * @author 老紫竹(Java世纪网,java2000.net)
    14.  */
    15. public class Test extends JFrame {

    16.   public Test(String url, File file) throws Exception {
    17.     JEditorPane editorPane = new JEditorPane();
    18.     editorPane.setEditable(false);
    19.     editorPane.setPage(url);
    20.     JScrollPane jsp = new JScrollPane(editorPane);
    21.     getContentPane().add(jsp);
    22.     this.setLocation(00);
    23.     this.setVisible(true); // 如果这里不设置可见,则里面的图片等无法截取
    24.     
    25.     // 如果不延时,则图片等可能没有时间下载显示
    26.     // 具体的秒数需要根据网速等调整
    27.     Thread.sleep(5 * 1000);

    28.     setSize(1000010000);

    29.     pack();
    30.     // BufferedImage image = new BufferedImage(editorPane.getWidth(),
    31.     // editorPane.getHeight(), BufferedImage.TYPE_INT_RGB);
    32.     BufferedImage image = new BufferedImage(editorPane.getWidth(), editorPane.getHeight(),
    33.         BufferedImage.TYPE_INT_RGB);
    34.     Graphics2D graphics2D = image.createGraphics();
    35.     editorPane.paint(graphics2D);
    36.     
    37.     BufferedImage image1 = resize(image, 600400);

    38.     ImageIO.write(image1, "jpg", file);
    39.     dispose();
    40.   }

    41.   public static void main(String[] args) throws Exception {
    42.     new Test("http://www.google.cn"new File("d:/file.jpg"));
    43.   }

    44.   public static BufferedImage resize(BufferedImage source, int targetW, int targetH) {
    45.     // targetW,targetH分别表示目标长和宽
    46.     int type = source.getType();
    47.     BufferedImage target = null;
    48.     double sx = (double) targetW / source.getWidth();
    49.     double sy = (double) targetH / source.getHeight();
    50.     // 这里想实现在targetW,targetH范围内实现等比缩放。如果不需要等比缩放
    51.     // 则将下面的if else语句注释即可
    52.     if (sx > sy) {
    53.       sx = sy;
    54.       targetW = (int) (sx * source.getWidth());
    55.       // } else {
    56.       // sy = sx;
    57.       // targetH = (int) (sy * source.getHeight());
    58.     }
    59.     if (type == BufferedImage.TYPE_CUSTOM) { // handmade
    60.       ColorModel cm = source.getColorModel();
    61.       WritableRaster raster = cm.createCompatibleWritableRaster(targetW, targetH);
    62.       boolean alphaPremultiplied = cm.isAlphaPremultiplied();
    63.       target = new BufferedImage(cm, raster, alphaPremultiplied, null);
    64.     } else
    65.       target = new BufferedImage(targetW, targetH, type);
    66.     Graphics2D g = target.createGraphics();
    67.     // smoother than exlax:
    68.     g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
    69.     g.drawRenderedImage(source, AffineTransform.getScaleInstance(sx, sy));
    70.     g.dispose();
    71.     return target;
    72.   }
    73. }



         欢迎访问老紫竹的网站( http://www.java2000.net )和我在CSDN的博客( http://blog.csdn.net/java2000_net );           

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • 网页快照 java 实现 .

    2013-05-24 15:32:29
    JFrame frame = new JFrame("以DJ组件保存指定网页截图"); // 加载google,最大保存为640x480的截图 frame.getContentPane().add( new Main("www.ifeng.com", 1024, 768), BorderLayout.CENTER); frame.set...
  • 安装扩展:  (1)下面是我在linux上的安装过程,如果没有安装git请先yum install git  安装casperjs 复制代码 代码如下:  cd /  git clone git://github.com/n1k0/casperjs.git  cd casperjs ...  ...
  • public classWebSnapshotsHelper{Bitmap m_Bitmap;stringm_Url;intm_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth, m_ThumbnailHeight;public WebSnapshotsHelper(string Url, int BrowserWidth, int BrowserHe...
  • C#实现网页快照,输入任意链接,在指定文件夹下生成对应的.jpg网页截图,且解决了截图白屏问题!
  • 本软件实现了单个网页快照抓取、批量网页快照抓取等功能。实现了网址的基本操作,如添加网址、删除网址、修改网址等。本软件的知识产权属天使知识授理厂 www.a3gs.com 你可以到此网站下载本软件源码进行学习、修改等...
  • Shell脚本实现获取网页快照并生成缩略图  这篇文章主要介绍了Shell脚本实现获取网页快照并生成缩略图,本文获取网页快照使用phantomjs、生成缩略图使用ImageMagick,需要的朋友可以参考下 获取网页快照并生成缩略...
  • 有时候我们需要将网页转成图片,那么可以使用WebBrowser来生成网页快照,废话不多说,代码如下 1、网页快照帮助类(如果是BS或控制台需要引用System.Windows.Forms类库): 1 public class WebSnapshotsHelper ...
  • FileInputFormat.addInputPath(job,...中仅处理了Segment文件夹下“parse_data”与“parse_text”中的内容,对于原始的网页快照文件夹(“content”)并没有进行处理,Segment文件夹结构如下所示: 我们在这里要...
  • VB 实现网站快照 VB抓取网页快照 vb网站快照生成器 VB 网站快照生成 VB怎么生成网站快照
  • 实现Android 版网页快照功能

    千次阅读 2013-03-22 01:09:15
    现在一般的购物网站,在你完成交易后都会将页面拍照以免日后发生商务纠纷,而对于我们移动开发者这个传统互联网上的优秀经验也同样给了我们一些设计上的启迪,接下来我将几种实现思路写出来供大家参考。 方案一:...
  • C#实现网页快照,输入任意链接,在指定文件夹下生成对应的.jpg网页截图,且解决了截图白屏问题! C#实现网页快照,输入任意链接,在指定文件夹下生成对应的.jpg网页截图,且解决了截图白屏问题!
  • java网页快照-网页转存为图片

    千次阅读 2017-08-18 16:43:22
    java网页快照-网页转存为图片 个人觉得最完美最方便的网页快照生成方式。可以生成大型网页的快照。非常棒! 使用代码前需要导入 jar包。需要三个jar包 :swt-3.6M3-win32-win32-x86.jar,DJNativeSwing-SWT....
  • 前面有写博文,利用phantomjs实现网页快照,分别适配windows,linux,mac,好不容易搞好了,结果把项目镜像放到docker运行容器的时候,居然失效了。docker内部不也是linux内核么,居然会出问题。找了半天,发现是...
  • 今天遇到一个需求,是前端给后台一个网址,后台需要返回这个网址的快照回去,刚接手的时候一脸懵,了解了一下,是项目中有个播放视频或者直播的区域,需要一张图片来作为封面图,但是如果专门去存的话不方便,也不...
  • package io.jpress.admin.controller; import java.awt.AWTException; import java.awt.Desktop; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image;...import java.awt.Rectangle;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,495
精华内容 4,998
关键字:

网页快照实现