타사 서비스 없이 ASP.NET에서 웹페이지를 이미지로 변환
과제:
이루기 위해 외부 서비스에 의존하지 않고 웹페이지를 JPG 이미지로 변환하는 함수를 C#으로 생성해야 하는 요구사항, ASP.NET의 기능을 활용하는 것이 필수적입니다.
해결책:
기술 조합을 활용하는 솔루션에는 다음이 포함됩니다.
구현:
제공된 코드에는 웹페이지에서 이미지를 효과적으로 생성하는 새로운 클래스인 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 클래스를 사용하려면 간단히 생성하세요. 인스턴스를 생성하고 생성() 메서드를 호출하여 비트맵:
WebsiteToImage websiteToImage = new WebsiteToImage("https://www.example.com", @"C:\path\to\result.jpg"); Bitmap bitmap = websiteToImage.Generate();
중요 사항:
이 솔루션이 의도한 대로 작동하도록 하려면 ASP에서 System.Windows.Forms에 대한 참조를 추가하세요. NET 프로젝트입니다.
업데이트:
코드는 다음과 같습니다. 전체 웹페이지를 캡처하도록 향상되어 페이지의 일부만 캡처하기 위해 특정 조정이 필요하지 않습니다.
위 내용은 타사 라이브러리 없이 ASP.NET에서 웹 페이지를 JPG 이미지로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!