首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 伺服器端截圖功能實作:擷取網頁畫面儲存為圖片

     編輯:ASP.NET 基礎

本文示範在 ASP.NET 伺服器端啟動 IE 瀏覽器載入指定網址,等待載入完成後透過 Graphics.CopyFromScreen 擷取螢幕畫面並儲存為 JPEG 檔案。此技術常用於自動化報表產生、網頁封存或視覺化驗證。

完整實作程式碼

using System.Drawing;
using System.Diagnostics;
using System.Threading;

// 1. 啟動 IE 載入目標頁面
Process.Start("IEXPLORE.EXE", "https://localhost:56/Spacxxe.html");
Thread.Sleep(3000); // 等待頁面載入

// 2. 建立畫布並擷取螢幕區域
Image templateImage = new Bitmap(1040, 700);
Graphics templateG = Graphics.FromImage(templateImage);
// 來源螢幕座標 (200,100) → 畫布 (0,0),擷取 1000x900
templateG.CopyFromScreen(new Point(200, 100), new Point(0, 0), new Size(1000, 900), CopyPixelOperation.MergeCopy);

// 3. 關閉 IE 進程
foreach (var ps in Process.GetProcessesByName("IEXPLORE")) ps.Kill();

// 4. 儲存圖片
templateImage.Save($@"E:\TEST\{imgname}.jpg", Imaging.ImageFormat.Jpeg);

關鍵點解析

步驟說明
Process.Start啟動 IE,需確認伺服器已安裝 IE 且允許互動式服務
Thread.Sleep簡易等待,實務建議改用 WebBrowser 控制項或 Selenium 等待載入完成事件
CopyFromScreen從螢幕座標複製像素到 Bitmap,需以互動式帳號執行 IIS
Process.Kill關閉所有 IE 進程,若多使用者環境請改用 PID 精確關閉

部署注意事項

  • IIS 應用程式集區需啟用「載入使用者設定檔」並以具桌面互動權限的帳號執行
  • 伺服器需安裝桌面體驗功能,否則 System.Drawing 可能失效
  • 現代架構建議改用 Headless Chrome (Puppeteer/Playwright) 或 Selenium WebDriver,跨平台且穩定

替代方案比較

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方案優點缺點
IE + CopyFromScreen程式碼簡單、無額外依賴需桌面互動、僅限 Windows、IE 已淘汰
Selenium + ChromeDriver跨平台、支援現代 Web、可等待特定元素需安裝瀏覽器與 Driver、資源較重
Puppeteer/Playwright高效能、無頭模式、API 豐富Node.js 環境、或需 .NET 移植版