サードパーティ サービスを使用せずに ASP.NET で Web ページを画像に変換する
課題:
を達成するには外部サービスに依存せずに Web ページを JPG 画像に変換する関数を C# で作成するという要件ASP.NET の機能を利用するために不可欠です。
解決策:
技術の組み合わせを活用する解決策には、次のものが含まれます。
実装:
提供されたコードには、Web ページから画像を効果的に生成する新しいクラス WebsiteToImage.cs が含まれています。
public class WebsiteToImage { private Bitmap m_Bitmap; private string m_Url; private string m_FileName = string.Empty; // Constructor with URL only public WebsiteToImage(string url) { m_Url = url; } // Constructor with URL and filename for saving public WebsiteToImage(string url, string fileName) { m_Url = url; m_FileName = fileName; } public Bitmap Generate() { // Start a new thread for WebBrowser operations var m_thread = new Thread(_Generate); m_thread.SetApartmentState(ApartmentState.STA); m_thread.Start(); // Wait for thread to complete and retrieve the bitmap m_thread.Join(); return m_Bitmap; } private void _Generate() { using (var browser = new WebBrowser { ScrollBarsEnabled = false }) { // Navigate to the webpage browser.Navigate(m_Url); // Wait for the document to load while (browser.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); } // Capture the webpage as a bitmap browser.ClientSize = new Size(browser.Document.Body.ScrollRectangle.Width, browser.Document.Body.ScrollRectangle.Bottom); m_Bitmap = new Bitmap(browser.Document.Body.ScrollRectangle.Width, browser.Document.Body.ScrollRectangle.Bottom); browser.BringToFront(); browser.DrawToBitmap(m_Bitmap, browser.Bounds); // Save the bitmap to file if a filename was provided if (m_FileName.Length > 0) { // Save as JPG using custom bitmap extension m_Bitmap.SaveJPG100(m_FileName); } } } }
BMP を別名で保存するための拡張メソッドJPG:
次の拡張メソッドにより、ビットマップを高品質の JPG として保存することが簡単になります:
public static void SaveJPG100(this Bitmap bmp, string filename) { var encoderParameters = new EncoderParameters(1); encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L); bmp.Save(filename, GetEncoder(ImageFormat.Jpeg), encoderParameters); }
使用法:
WebsiteToImage クラスを使用するには、単純にインスタンスを作成し、Generate() メソッドを呼び出してビットマップ:
WebsiteToImage websiteToImage = new WebsiteToImage("https://www.example.com", @"C:\path\to\result.jpg"); Bitmap bitmap = websiteToImage.Generate();
重要な注意:
このソリューションが意図したとおりに機能することを確認するには、ASP に System.Windows.Forms への参照を追加します。 NET プロジェクト。
更新:
コードが次のように拡張されました。 Web ページ全体をキャプチャするため、ページの一部のみをキャプチャするために特別な調整を行う必要がなくなります。
以上がサードパーティのライブラリを使用せずに ASP.NET で Web ページを JPG 画像に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。