Popular Posts
javax.net.ssl.SSLHandshakeException: Connection closed by peer in Android 5.0 Lollipop Recently, there is a error occurs when access website via ssl connection like below although it worked fine several days ago. // Enable SSL... DNS SERVER LIST Google 8.8.8.8 8.8.4.4 TWNIC 192.83.166.11 211.72.210.250 HiNet 168.95.1.1 168.95.192.1 Seednet 北區 DNS (台北, 桃園, 新竹, 宜蘭, 花蓮, 苗栗) 139.... CORS in Asp.net MVC Web API v2 Step 1. Install cors from NeGet Step 2. Enable cors in config using System; using System.Collections.Generic; using System.Linq; using ...
Blog Archive
Stats
Simple Web snapshot
import java.util.Date;

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.ImageLoader;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class WebSnap {

    public static final int PNG = SWT.IMAGE_PNG;
    public static final int BMP = SWT.IMAGE_BMP;
    public static final int JPG = SWT.IMAGE_JPEG;
    public static final int GIF = SWT.IMAGE_GIF;
    public static final int TIFF = SWT.IMAGE_TIFF;

    private Display display;
    private Shell shell;
    private Browser browser;

    /**
     * 截圖寬度
     */
    private int width;
    /**
     * 截圖高度
     */
    private int height;

    /**
     * @param width
     *            截圖寬度
     * @param height
     *            截圖高度
     * @param url
     *            目標網址URL
     */
    public WebSnap(int width, int height, String url) {
        this.width = width;
        this.height = height;
        this.display = new Display();

        this.shell = new Shell(this.display);
        this.shell.setLayout(new FillLayout());
        this.shell.setSize(width, height);
        this.shell.setText("Web Snap");

        this.browser = new Browser(this.shell, SWT.NONE);
        this.browser.setSize(width, height);
        this.browser.setUrl(url);
    }

    /**
     * @param file
     *            圖片存檔路徑
     * @param swtImageType
     *            圖片存檔類型
     */
    private void snap(String file, int swtImageType) {
        Image data = new Image(this.display, this.width, this.height);
        this.browser.print(new GC(data));
        ImageLoader il = new ImageLoader();
        il.data = new ImageData[] { data.getImageData() };
        il.save(file, swtImageType);
        data.dispose();
    }

    /**
     * @param file
     *            圖片存檔路徑
     * @param swtImageType
     *            圖片存檔類型
     * @param sleepTick
     *            延遲時間
     */
    public void asynSnap(final String file, final int type, final long sleepTick) {
        new Thread() {
            public void run() {
                try {
                    Thread.sleep(sleepTick);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                WebSnap.this.display.asyncExec(new Runnable() {
                    public void run() {
                        WebSnap.this.snap(file, type);
                        WebSnap.this.shell.dispose();
                    }
                });
            };
        }.start();
        this.waitForDispose();
    }

    private void waitForDispose() {
        while (!this.shell.isDisposed()) {
            if (!this.display.readAndDispatch()) {
                this.display.sleep();
            }
        }
        this.display.dispose();
    }

    public static void main(String[] args) {
        int width = 1024, height = 768;
        String url = "http://tw.yahoo.com";
        String file = String.format("w%d.png", new Date().getTime());

        WebSnap ws = new WebSnap(width, height, url);
        ws.asynSnap(file, WebSnap.PNG, 18000);
    }

}