> 백엔드 개발 > C++ > 타사 라이브러리 없이 ASP.NET에서 웹 페이지를 JPG 이미지로 변환하는 방법은 무엇입니까?

타사 라이브러리 없이 ASP.NET에서 웹 페이지를 JPG 이미지로 변환하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-28 02:09:10
원래의
554명이 탐색했습니다.

How to Convert Webpages to JPG Images in ASP.NET without Third-Party Libraries?

타사 서비스 없이 ASP.NET에서 웹페이지를 이미지로 변환

과제:
이루기 위해 외부 서비스에 의존하지 않고 웹페이지를 JPG 이미지로 변환하는 함수를 C#으로 생성해야 하는 요구사항, ASP.NET의 기능을 활용하는 것이 필수적입니다.

해결책:
기술 조합을 활용하는 솔루션에는 다음이 포함됩니다.

  1. 스레드로부터 안전한 웹 브라우저: ASP.NET 내에서 대상 웹페이지에 액세스하기 위해 WebBrowser 컨트롤의 스레드로부터 안전한 처리 활력이 됩니다. 이 측면은 신뢰할 수 있는 소스의 솔루션을 결합하여 해결됩니다.
  2. BMP에서 JPG로 변환: 웹페이지가 렌더링되면 캡처된 비트맵을 JPG로 변환해야 합니다. 이에 대한 입증된 솔루션이 코드에 통합되어 있습니다.

구현:
제공된 코드에는 웹페이지에서 이미지를 효과적으로 생성하는 새로운 클래스인 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿