The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

介紹好用工具:IECapt

我之前就介紹過一個 URL2JPEG 工具,但最近又發現一個更棒的工具:IECapt

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

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

  1. 新增一個 Console Application 專案
  2. 加入參考(共四個命名空間)
    1. AxSHDocVw
    2. Microsoft.mshtml
    3. System.Drawing
    4. System.Windows.Forms
  3. 開啟 Program.cs 並將內容全部替換成 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

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

多奇數位創意有限公司

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

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

擷取到的畫面變成這樣:

多奇數位創意有限公司

是不是完美多了呢! ^_^

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

相關連結