﻿# 介紹好用工具：IECapt

我之前就介紹過一個 [URL2JPEG](http://www.url2jpeg.com/) 工具，但最近又發現一個更棒的工具：[IECapt](http://iecapt.sourceforge.net/)

[IECapt](http://iecapt.sourceforge.net/) 是一個指令列工具(command-line utility)，他可以透過 IE 擷取特定網頁的畫面下來並轉存成 BMP, JPEG, PNG, TIFF 或 EMF 等圖片格式，此工具軟體也是一個 Open Source 的專案，你可以下載 C++ 或 C# 的原始碼回來研究喔。有了這個工具就可以實做出動態擷取網頁畫面的功能，目前網路界最有名的畫面預覽網站就是 [Snap Shots](http://www.snap.com/) 網站。

我自己下載回來試了一下，如果要能夠編譯成功大致上有三個步驟，如下：

1.  新增一個 Console Application 專案
2.  加入參考（共四個命名空間）
    1.  AxSHDocVw
    2.  Microsoft.mshtml
    3.  System.Drawing
    4.  System.Windows.Forms
3.  開啟 Program.cs 並將內容全部替換成 [IECapt.cs](http://iecapt.cvs.sourceforge.net/*checkout*/iecapt/IECapt/IECapt/IECapt.cs) 的內容

編譯成功後在 bin\\Debug 目錄下就會出現 IECapt.exe 可以用了，預設 C# 版編譯出來的使用方式如下：

```
Usage: IECapt --url=http://... --out=file.png

Options:
  --url         The URL to capture
  --out         The target file (.png|jpeg|bmp|emf|tiff)
  --min-width   Minimal width for the image (default: 800)
  --delay       Capturing delay in ms (default: 1)
```

如果要擷取網頁圖片可以這樣用：

```
IECapt --url=http://www.miniasp.com/ --out=miniasp.png
```

輸出的結果會變成底下這張圖：

[![多奇數位創意有限公司](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/fff44bfbd6ee9a34df8e-miniasp-1_thumb.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/908fe4815205d26938ae-miniasp-1_2.png)

你可以看到上面黑黑的一塊其實是 Flash 剛開始跑的畫面，你如果要等待多幾秒再擷取畫面的話，可以加上 --delay 參數等待個五秒：

```
IECapt --url=http://www.miniasp.com/ --out=miniasp.png --delay=5000
```

擷取到的畫面變成這樣：

[![多奇數位創意有限公司](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/43e04040f39264e29c6c-miniasp-2_thumb.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/bce1caafa16623452878-miniasp-2_2.png)

是不是完美多了呢！ ^\_^

我是覺得參數太少了，不夠用就自己加摟，特別是他抓下來的畫面是要多大有多大，像從我的部落格首頁下載下來網頁圖片的高度就有 17,104px，如果要限制圖片的大小就必須改原始碼了，大概在原始碼的第 951 行的地方有個 DoCapture() 方法，裡面有定義擷取畫面的寬(width)、高(height)，如果你要限制畫面輸出的大小只要修改這一段的程式即可。

**相關連結**

-   [IECapt](http://iecapt.sourceforge.net/)
