Trích xuất SVG từ trang web trong C#

Bạn đã bao giờ rơi vào trường hợp muốn lưu hoặc tải xuống hình ảnh SVG từ một trang web hoặc từ một URL trực tiếp chưa? Đồ họa vectơ có thể mở rộng (SVG) là định dạng hình ảnh phổ biến được sử dụng trên các trang web. Hình ảnh SVG dựa trên vector, có nghĩa là chúng được tạo thành từ các đối tượng toán học có thể được thu nhỏ theo bất kỳ kích thước nào mà không làm giảm chất lượng. Điều này làm cho chúng trở thành một định dạng linh hoạt và hiệu quả để lưu trữ và hiển thị hình ảnh. Trong bài đăng trên blog này, chúng tôi sẽ thảo luận về cách trích xuất SVG từ một trang web trong C#.

Bài viết này bao gồm các chủ đề sau:

  1. API C# để trích xuất SVG từ trang web
  2. Trích xuất SVG từ trang web
  3. Tải xuống hình ảnh SVG bên ngoài từ trang web
  4. Tài nguyên học tập miễn phí

API C# để trích xuất SVG từ trang web

Chúng tôi sẽ sử dụng Aspose.HTML for .NET để trích xuất SVG từ các trang web. Nó cho phép các nhà phát triển thao tác và xử lý các tài liệu HTML. Nó có thể được sử dụng để tự động hóa thao tác, chuyển đổi hoặc phân tích tài liệu HTML trong ứng dụng .NET. Các nhà phát triển có thể tiết kiệm thời gian và công sức bằng cách triển khai giải pháp sẵn sàng sử dụng để xử lý các tác vụ liên quan đến HTML theo chương trình. Nó cũng cho phép chuyển đổi các trang web và tài liệu HTML sang các định dạng được hỗ trợ mà không cần bất kỳ phần mềm bên ngoài nào.

Vui lòng tải xuống DLL của API hoặc cài đặt nó bằng NuGet.

PM> Install-Package Aspose.Html

Trích xuất SVG từ trang web trong C#

Chúng tôi có thể trích xuất tất cả các hình ảnh SVG được nhúng bằng cách sử dụng <svg> phần tử bằng cách làm theo các bước dưới đây:

  1. Tải trang web bằng lớp HTMLDocument.
  2. Đọc tất cả hình ảnh SVG nội tuyến bằng phương thức GetElementsByTagName().
  3. Cuối cùng, lặp qua tất cả các hình ảnh và lưu vào hệ thống tệp cục bộ.

Mẫu mã sau đây cho biết cách trích xuất SVG từ một trang web trong C#.

// Mẫu mã sau đây trình bày cách trích xuất SVG từ một trang web trong C#.
using Aspose.Html;

string OutputDir = "C:\\Files\\Internal\\";

// Mở tài liệu bạn muốn trích xuất hình ảnh SVG nội tuyến từ đó
using var document = new HTMLDocument("https://docs.aspose.com/svg/net/drawing-basics/svg-shapes/");

// Thu thập tất cả hình ảnh SVG nội tuyến
var images = document.GetElementsByTagName("svg");

for (var i = 0; i < images.Length; i++)
{
    // Lưu mọi hình ảnh SVG vào hệ thống tệp cục bộ
    File.WriteAllText(Path.Combine(OutputDir, $"{i}.svg"), images[i].OuterHTML);
}
Trích xuất SVG từ trang web trong C#

Trích xuất SVG từ trang web trong C#

Tải xuống hình ảnh SVG bên ngoài từ trang web bằng C#

Chúng tôi có thể trích xuất tất cả hình ảnh SVG được lưu trữ bên ngoài tài liệu HTML và được tải vào tài liệu bằng cách thực hiện theo các bước bên dưới:

  1. Tải trang web bằng lớp HTMLDocument.
  2. Đọc tất cả hình ảnh SVG nội tuyến bằng phương thức GetElementsByTagName().
  3. Cuối cùng, lặp qua tất cả các hình ảnh và lưu vào hệ thống tệp cục bộ.

Mẫu mã sau đây cho biết cách trích xuất SVG được nhúng bên ngoài từ một trang web trong C#.

using Aspose.Html;
using Aspose.Html.Net;

// Thư mục tập tin
string OutputDir = "C:\\Files\\";

// Mở tài liệu bạn muốn trích xuất các SVG bên ngoài từ
using var document = new HTMLDocument("https://docs.aspose.com/svg/net/drawing-basics/svg-shapes/");

// Thu thập tất cả các yếu tố hình ảnh
var images = document.GetElementsByTagName("img");

// Tạo một bộ sưu tập URL hình ảnh tương đối riêng biệt
var urls = images.Select(element => element.GetAttribute("src")).Distinct();

// Lọc hình ảnh không phải SVG
var svgUrls = urls.Where(url => url.EndsWith(".svg"));

// Tạo URL hình ảnh SVG tuyệt đối
var absUrls = svgUrls.Select(src => new Url(src, document.BaseURI));

foreach (var url in absUrls)
{
    // Tạo yêu cầu trích xuất
    using var request = new RequestMessage(url);

    // Trích xuất SVG
    using var response = document.Context.Network.Send(request);

    // Kiểm tra xem phản hồi có thành công không
    if (response.IsSuccess)
    {
        // Lưu hình ảnh SVG vào hệ thống tệp cục bộ
        File.WriteAllBytes(Path.Combine(OutputDir, url.Pathname.Split('/').Last()), response.Content.ReadAsByteArray());
    }
}

Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử Aspose.HTML for .NET mà không bị giới hạn về đánh giá.

Trích xuất SVG từ trang web – Tài nguyên học tập

Bạn có thể tìm hiểu thêm về cách trích xuất SVG từ các trang web và khám phá nhiều tính năng khác của thư viện bằng cách sử dụng các tài nguyên bên dưới:

Phần kết luận

Trong bài viết này, chúng ta đã tìm hiểu cách trích xuất SVG từ các trang web trong C#. Khả năng trích xuất SVG từ các trang web hoặc trang web mang đến một chiều hướng mới cho sự sáng tạo kỹ thuật số. Cho dù đó là để lưu trữ đồ họa đầy cảm hứng, phân tích xu hướng thiết kế hay nâng cao dự án của riêng bạn, thì các bước được nêu trong bài viết này đều cho thấy quy trình này tương đối đơn giản và yêu cầu một vài dòng mã. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn hỗ trợ miễn phí của chúng tôi.

Xem thêm