Ефект насиченості за допомогою кольорової матриці SVG у C#

Ви коли-небудь помічали, що деякі зображення в Інтернеті виглядають надто яскраво або кольори просто неправильні? Це пов’язано з явищем, яке називається ефектом насичення. У цій статті ми дізнаємося, як досягти ефекту насиченості за допомогою кольорової матриці SVG у C#.

По-перше, ми дізнаємося про ефект насиченості та розглянемо C# SVG API для застосування фільтра колірної матриці SVG. Далі ми розглянемо кроки, як виправити ефект насиченості за допомогою кольорової матриці для налаштування кольорів зображення. Нарешті, ми надамо корисні посилання для подальшого вдосконалення. Тож почнемо!

Ця стаття охоплюватиме наступні теми:

  1. Що таке ефект насиченості та кольорова матриця SVG
  2. API C# SVG для ефекту насиченості з використанням кольорової матриці
  3. Як використовувати кольорову матрицю SVG для ефекту насиченості
  4. Створіть ефект насиченості за допомогою кольорової матриці в C#

Що таке ефект насиченості та кольорова матриця SVG

Ефект насиченості — це поширена техніка обробки зображень, яка використовується, щоб зробити зображення більш яскравим. Він описує інтенсивність кольору.

Ефект насиченості спричинений тим, як наш мозок обробляє колір. Коли ми бачимо зображення, наш мозок автоматично налаштовує кольори, щоб зробити їх більш природними. Однак, коли зображення має забагато кольорів або кольори нерівномірно збалансовані, нашому мозку важче обробити зображення, що може спричинити ефект насиченості.

Ми можемо досягти ефекту насиченості за допомогою фільтруючого елемента SVG . Він надає фільтр для перетворення кольорів, щоб змінити кольори на основі матриці перетворення.

C# SVG API для ефекту насиченості з використанням кольорової матриці

Ефект насиченості є окремим випадком використання кольорової матриці. Ми будемо використовувати API Aspose.SVG for .NET для використання операції насиченості примітиву фільтра . API дозволяє завантажувати, аналізувати, відтворювати, створювати та перетворювати файли SVG у популярні формати без будь-яких програмних залежностей.

Завантажте DLL API або встановіть його за допомогою NuGet.

PM> Install-Package Aspose.SVG

Як використовувати кольорову матрицю SVG для ефекту насиченості

застосовує матричне перетворення до каналів RGBA кожного пікселя вхідного зображення. Ми можемо використовувати елемент SVG для ефекту насиченості, дотримуючись наведених нижче кроків:

  1. Визначте документ SVG і встановіть URL-адресу простору імен SVG.
  2. Створіть елемент зображення та елемент фільтра.
  3. Додайте графічний елемент.
  4. Створіть елемент feColorMatrix і додайте його до елемента фільтра.
  5. Збережіть вихідне зображення SVG.

У наступному розділі описано, як перетворити ці дії на код C# і створити ефект насиченості у SVG.

Створення ефекту насиченості за допомогою кольорової матриці в C#

Ми можемо створити ефект насиченості за допомогою елемента , виконавши наведені нижче кроки:

  1. По-перше, створіть екземпляр класу SVGDocument.
  2. Далі перейдіть до кореневого елемента SVG і вкажіть URL-адресу простору імен для SVG.
  3. Потім ініціалізуйте об’єкт класу SVGImageElement.
  4. Тим часом установіть шлях зображення та інші властивості для SVGImageElement.
  5. Далі визначте об’єкт класу SVGDefsElement і додайте його до кореневого елемента.
  6. Потім створіть об’єкт класу SVGFilterElement і додайте його до SVGDefsElement.
  7. Далі визначте об’єкт класу SVGFEColorMatrixElement.
  8. Потім встановіть необхідні атрибути ig type: saturate
  9. Після цього додайте SVGFEColorMatrixElement до SVGFilterElement.
  10. Нарешті, збережіть вихідний файл SVG за допомогою методу Save().

У наведеному нижче прикладі коду показано, як створити ефект насиченості за допомогою кольорової матриці в C#.

// Цей приклад коду демонструє, як створити ефект насиченості за допомогою кольорової матриці в C#.
// Створіть екземпляр SVGDocument
var document = new SVGDocument();

// Отримати кореневий елемент svg документа
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);

// Створіть елемент defs і додайте його до svgElement
Aspose.Svg.SVGDefsElement defsElement = (Aspose.Svg.SVGDefsElement)document.CreateElementNS(SvgNamespace, "defs");
svgElement.AppendChild(defsElement);

// Створіть елемент фільтра та додайте його до елемента defsElement
Aspose.Svg.SVGFilterElement filterElement = (Aspose.Svg.SVGFilterElement)document.CreateElementNS(SvgNamespace, "filter");
defsElement.AppendChild(filterElement);

// Створіть елемент feColorMatrix
var feColorMatrixElement = (SVGFEColorMatrixElement)document.CreateElementNS(SvgNamespace, "feColorMatrix");
feColorMatrixElement.In1.BaseVal = "SourceGraphic";
feColorMatrixElement.SetAttribute("type", "saturate");
feColorMatrixElement.SetAttribute("values", "2");
filterElement.Id = "CM";

// Додати до елемента фільтра
filterElement.AppendChild(feColorMatrixElement);

// Збережіть документ SVG
document.Save("C:\\Files\\ColorEffect.svg");
Вихідне зображення маяк.jpg

Вихідне вхідне зображення

Ефект насиченості за допомогою кольорової матриці SVG

Ефект насиченості за допомогою кольорової матриці SVG у 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>

Отримайте безкоштовну ліцензію API

Ви можете отримати безкоштовну тимчасову ліцензію, щоб спробувати бібліотеку без оціночних обмежень.

Висновок

У цій статті ви дізналися про ефект насиченості зображень. Ми також побачили, як застосувати ефект насиченого кольору за допомогою фільтрів кольорової матриці SVG у C#. Крім того, ви можете дізнатися більше про Aspose.SVG for .NET за допомогою документації та дослідити різні функції, які пропонує API. У разі будь-якої неясності зв’яжіться з нами на нашому безкоштовному форумі підтримки.

Дивись також