Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menukar Halaman Web kepada Imej JPG dalam ASP.NET tanpa Perpustakaan Pihak Ketiga?

Bagaimana untuk Menukar Halaman Web kepada Imej JPG dalam ASP.NET tanpa Perpustakaan Pihak Ketiga?

Mary-Kate Olsen
Lepaskan: 2024-12-28 02:09:10
asal
560 orang telah melayarinya

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

Menukar Halaman Web kepada Imej dalam ASP.NET tanpa Perkhidmatan Pihak Ketiga

Cabaran:
Untuk memenuhi keperluan untuk mencipta fungsi dalam C# yang menukar halaman web kepada imej JPG tanpa bergantung pada perkhidmatan luaran, ia adalah penting untuk menggunakan keupayaan ASP.NET.

Penyelesaian:
Memanfaatkan gabungan teknik, penyelesaiannya melibatkan:

  1. Thread -Pelayar Web Selamat: Untuk mengakses halaman web sasaran dalam ASP.NET, kawalan WebBrowser pengendalian selamat benang menjadi penting. Aspek ini ditangani dengan menggabungkan penyelesaian daripada sumber yang boleh dipercayai.
  2. Penukaran BMP kepada JPG: Setelah halaman web dipaparkan, peta bit yang ditangkap perlu ditukar kepada JPG. Penyelesaian yang terbukti untuk ini dimasukkan ke dalam kod.

Pelaksanaan:
Kod yang disediakan merangkumi kelas baharu, WebsiteToImage.cs, yang menjana imej daripada halaman web dengan berkesan:

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);
            }
        }
    }
}
Salin selepas log masuk

Kaedah Sambungan untuk Menyimpan BMP sebagai JPG:
Kaedah sambungan berikut memudahkan menyimpan bitmap sebagai JPG dengan kualiti tinggi:

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);
}
Salin selepas log masuk

Penggunaan:
Untuk menggunakan kelas WebsiteToImage, cuma buat contoh dan panggil kaedah Generate() untuk mendapatkan a bitmap:

WebsiteToImage websiteToImage = new WebsiteToImage("https://www.example.com", @"C:\path\to\result.jpg");
Bitmap bitmap = websiteToImage.Generate();
Salin selepas log masuk

Nota Penting:
Untuk memastikan penyelesaian ini berfungsi seperti yang dimaksudkan, tambahkan rujukan kepada System.Windows.Forms dalam ASP anda. Projek NET.

Kemas kini:
Kod telah dipertingkatkan untuk menangkap keseluruhan halaman web, menghapuskan keperluan untuk pelarasan khusus untuk menangkap bahagian halaman sahaja.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Halaman Web kepada Imej JPG dalam ASP.NET tanpa Perpustakaan Pihak Ketiga?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan