Hiệu ứng bão hòa sử dụng Ma trận màu SVG trong C#

Bạn đã bao giờ nhận thấy một số hình ảnh trên internet trông quá sáng hoặc màu sắc không hoàn toàn phù hợp? Điều này là do một hiện tượng được gọi là hiệu ứng bão hòa. Trong bài viết này, chúng ta sẽ tìm hiểu cách đạt được hiệu ứng bão hòa với ma trận màu SVG trong C#.

Đầu tiên, chúng ta sẽ tìm hiểu về hiệu ứng bão hòa và xem xét API C# SVG để áp dụng bộ lọc ma trận màu SVG. Tiếp theo, chúng ta sẽ đi qua các bước về cách sửa hiệu ứng bão hòa bằng cách sử dụng ma trận màu để điều chỉnh màu sắc trong hình ảnh. Cuối cùng, chúng tôi sẽ cung cấp các liên kết hữu ích để cải tiến thêm. Vậy hãy bắt đầu!

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

  1. Hiệu ứng bão hòa và Ma trận màu SVG là gì
  2. C# SVG API cho Hiệu ứng bão hòa sử dụng Ma trận màu
  3. Cách sử dụng Ma trận màu SVG cho hiệu ứng bão hòa
  4. Tạo hiệu ứng bão hòa bằng Ma trận màu trong C#

Hiệu ứng bão hòa và Ma trận màu SVG là gì

Hiệu ứng bão hòa là một kỹ thuật xử lý hình ảnh phổ biến được sử dụng để làm cho hình ảnh có vẻ rực rỡ hơn. Nó mô tả cường độ của màu sắc.

Hiệu ứng bão hòa là do cách bộ não của chúng ta xử lý màu sắc. Khi chúng ta nhìn thấy một hình ảnh, não của chúng ta sẽ tự động điều chỉnh màu sắc để làm cho chúng trông tự nhiên hơn. Tuy nhiên, khi một hình ảnh có quá nhiều màu hoặc các màu không được cân bằng đồng đều, não của chúng ta sẽ gặp khó khăn hơn trong việc xử lý hình ảnh, điều này có thể gây ra hiệu ứng bão hòa.

Chúng ta có thể đạt được hiệu ứng bão hòa bằng cách sử dụng phần tử bộ lọc SVG . Nó cung cấp một bộ lọc cho các phép biến đổi màu sắc để thay đổi màu sắc dựa trên một ma trận chuyển đổi.

API C# SVG cho Hiệu ứng bão hòa sử dụng Ma trận màu

Hiệu ứng bão hòa là một trường hợp đặc biệt của việc sử dụng ma trận màu. Chúng tôi sẽ sử dụng API Aspose.SVG cho .NET để sử dụng hoạt động bão hòa của nguyên thủy bộ lọc . API cho phép tải, phân tích cú pháp, hiển thị, tạo và chuyển đổi tệp SVG sang các định dạng phổ biến mà không cần bất kỳ phụ thuộc phần mềm 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.SVG

Cách sử dụng Ma trận màu SVG cho hiệu ứng bão hòa

áp dụng phép biến đổi ma trận cho các kênh RGBA của mỗi pixel trong hình ảnh đầu vào. Chúng ta có thể sử dụng phần tử SVG cho hiệu ứng bão hòa bằng cách làm theo các bước dưới đây:

  1. Xác định tài liệu SVG và đặt URL vùng tên SVG.
  2. Tạo một phần tử hình ảnh và một phần tử bộ lọc.
  3. Nối phần tử đồ họa.
  4. Tạo một phần tử feColorMatrix và thêm nó vào phần tử bộ lọc.
  5. Lưu hình ảnh SVG đầu ra.

Phần sau đây mô tả cách chuyển các bước này thành mã C# và tạo hiệu ứng bão hòa trong SVG.

Tạo hiệu ứng bão hòa bằng Ma trận màu trong C#

Chúng ta có thể tạo hiệu ứng bão hòa bằng cách sử dụng phần tử bằng cách làm theo các bước dưới đây:

  1. Đầu tiên, tạo một thể hiện của lớp SVGDocument.
  2. Tiếp theo, truy cập phần tử SVG gốc và chỉ định URL không gian tên cho SVG.
  3. Sau đó, khởi tạo đối tượng lớp SVGImageElement.
  4. Trong khi đó, đặt đường dẫn hình ảnh và các thuộc tính khác cho SVGImageElement.
  5. Tiếp theo, xác định đối tượng lớp SVGDefsElement và thêm nó vào phần tử gốc.
  6. Sau đó, tạo đối tượng lớp SVGFilterElement và thêm nó vào SVGDefsElement.
  7. Tiếp theo, xác định đối tượng lớp SVGFEColorMatrixElement.
  8. Sau đó, đặt các thuộc tính bắt buộc ig type: saturate
  9. Sau đó, thêm SVGFEColorMatrixElement vào SVGFilterElement.
  10. Cuối cùng, lưu tệp SVG đầu ra bằng phương thức Save().

Mẫu mã sau đây cho thấy cách tạo hiệu ứng bão hòa với ma trận màu trong C#.

// Ví dụ mã này trình bày cách tạo hiệu ứng bão hòa với ma trận màu trong C#.
// Tạo một phiên bản của SVGDocument
var document = new SVGDocument();

// Nhận phần tử svg gốc của tài liệu
var svgElement = document.RootElement;

const string SvgNamespace = "http://www.w3.org/2000/svg";

var imageElement = (SVGImageElement)document.CreateElementNS(SvgNamespace, "image");
imageElement.Href.BaseVal = @"C:\Files\lighthouse.jpg";
imageElement.Height.BaseVal.ConvertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX);
imageElement.Width.BaseVal.ConvertToSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PX);
imageElement.Height.BaseVal.Value = 640;
imageElement.Width.BaseVal.Value = 480;
imageElement.X.BaseVal.Value = 20;
imageElement.Y.BaseVal.Value = 20;
imageElement.SetAttribute("filter", "url(#CM)");
svgElement.AppendChild(imageElement);

// Tạo một phần tử defs và thêm vào svgElement
Aspose.Svg.SVGDefsElement defsElement = (Aspose.Svg.SVGDefsElement)document.CreateElementNS(SvgNamespace, "defs");
svgElement.AppendChild(defsElement);

// Tạo một phần tử bộ lọc và thêm vào defsElement
Aspose.Svg.SVGFilterElement filterElement = (Aspose.Svg.SVGFilterElement)document.CreateElementNS(SvgNamespace, "filter");
defsElement.AppendChild(filterElement);

// Tạo một phần tử feColorMatrix
var feColorMatrixElement = (SVGFEColorMatrixElement)document.CreateElementNS(SvgNamespace, "feColorMatrix");
feColorMatrixElement.In1.BaseVal = "SourceGraphic";
feColorMatrixElement.SetAttribute("type", "saturate");
feColorMatrixElement.SetAttribute("values", "2");
filterElement.Id = "CM";

// Nối vào phần tử bộ lọc
filterElement.AppendChild(feColorMatrixElement);

// Lưu tài liệu SVG
document.Save("C:\\Files\\ColorEffect.svg");
Nguồn ảnh lighthouse.jpg

Nguồn đầu vào hình ảnh

Hiệu ứng bão hòa sử dụng Ma trận màu SVG

Hiệu ứng bão hòa sử dụng Ma trận màu SVG trong C#

<svg xmlns="http://www.w3.org/2000/svg">
    <image href="file:///C:/Files/lighthouse.jpg" height="640" width="480" x="20" y="20" filter="url(#CM)"/>
    <defs>
        <filter id="CM">
            <feColorMatrix in="SourceGraphic" type="saturate" values="2"/>
        </filter>
    </defs>
</svg>

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

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử thư viện mà không có giới hạn đánh giá.

Sự kết luận

Trong bài này, bạn đã tìm hiểu về hiệu ứng bão hòa trên ảnh. Chúng tôi cũng đã thấy cách áp dụng hiệu ứng màu bão hòa bằng cách sử dụng các bộ lọc ma trận màu SVG trong C#. Bên cạnh đó, bạn có thể tìm hiểu thêm về Aspose.SVG cho .NET bằng cách sử dụng tài liệu và khám phá các tính năng khác nhau được cung cấp bởi API. 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