Heim >Backend-Entwicklung >C++ >Wie konvertiert man Webseiten in ASP.NET in JPG-Bilder ohne Bibliotheken von Drittanbietern?
Konvertieren von Webseiten in Bilder in ASP.NET ohne Dienste von Drittanbietern
Herausforderung:
Zu erfüllen Um die Anforderung zu erfüllen, eine Funktion in C# zu erstellen, die eine Webseite in ein JPG-Bild konvertiert, ohne auf externe Dienste angewiesen zu sein, ist es wichtig, die Funktionen von zu nutzen ASP.NET.
Lösung:
Die Lösung nutzt eine Kombination von Techniken und umfasst:
Implementierung:
Der bereitgestellte Code umfasst eine neue Klasse, WebsiteToImage.cs, die effektiv Bilder von Webseiten generiert:
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); } } } }
Erweiterungsmethode zum Speichern von BMP als JPG:
Die folgende Erweiterungsmethode vereinfacht das Speichern einer Bitmap als JPG mit hoher Qualität:
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); }
Verwendung:
Um die WebsiteToImage-Klasse zu verwenden, erstellen Sie sie einfach eine Instanz und rufen Sie die Generate()-Methode auf, um eine Bitmap zu erhalten:
WebsiteToImage websiteToImage = new WebsiteToImage("https://www.example.com", @"C:\path\to\result.jpg"); Bitmap bitmap = websiteToImage.Generate();
Wichtig Hinweis:
Um sicherzustellen, dass diese Lösung wie vorgesehen funktioniert, fügen Sie einen Verweis auf System.Windows.Forms in Ihrem ASP.NET-Projekt hinzu.
Update:
Der Code wurde verbessert, um die gesamte Webseite zu erfassen, sodass keine spezifischen Anpassungen erforderlich sind, um nur Teile der Seite zu erfassen.
Das obige ist der detaillierte Inhalt vonWie konvertiert man Webseiten in ASP.NET in JPG-Bilder ohne Bibliotheken von Drittanbietern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!