Efekt nasycenia przy użyciu matrycy kolorów SVG w języku C#

Czy zauważyłeś kiedyś, że niektóre obrazy w Internecie są zbyt jasne lub kolory są po prostu nieodpowiednie? Wynika to ze zjawiska zwanego efektem nasycenia. W tym artykule dowiemy się, jak uzyskać efekt nasycenia za pomocą matrycy kolorów SVG w języku C#.

Najpierw poznamy efekt nasycenia i przyjrzymy się C# SVG API, aby zastosować filtr matrycy kolorów SVG. Następnie przejdziemy przez kolejne etapy poprawiania efektu nasycenia za pomocą matrycy kolorów w celu dostosowania kolorów na obrazie. Na koniec udostępnimy przydatne łącza do dalszych ulepszeń. Więc zacznijmy!

Ten artykuł obejmuje następujące tematy:

  1. Co to jest efekt nasycenia i matryca kolorów SVG
  2. C# SVG API dla efektu nasycenia przy użyciu Color Matrix
  3. Jak korzystać z matrycy kolorów SVG w celu uzyskania efektu nasycenia
  4. Tworzenie efektu nasycenia za pomocą Color Matrix w C#

Co to jest efekt nasycenia i matryca kolorów SVG

Efekt nasycenia jest powszechną techniką przetwarzania obrazu, dzięki której obraz wydaje się bardziej żywy. Opisuje intensywność koloru.

Efekt nasycenia jest spowodowany sposobem, w jaki nasz mózg przetwarza kolory. Kiedy widzimy obraz, nasz mózg automatycznie dostosowuje kolory, aby wyglądały bardziej naturalnie. Jednak gdy obraz ma zbyt dużo kolorów lub kolory nie są równomiernie zbalansowane, nasz mózg ma większe problemy z przetwarzaniem obrazu, co może powodować efekt nasycenia.

Efekt nasycenia możemy osiągnąć za pomocą elementu filtrującego SVG. Zapewnia filtr transformacji kolorów w celu zmiany kolorów w oparciu o macierz transformacji.

C# SVG API dla efektu nasycenia przy użyciu Color Matrix

Efekt nasycenia to szczególny przypadek użycia matrycy kolorów. Będziemy używać interfejsu API Aspose.SVG for .NET do korzystania z operacji nasycenia prymitywu filtru . Interfejs API umożliwia ładowanie, analizowanie, renderowanie, tworzenie i konwersję plików SVG do popularnych formatów bez żadnych zależności programowych.

Proszę pobrać bibliotekę DLL interfejsu API lub zainstalować ją za pomocą NuGet.

PM> Install-Package Aspose.SVG

Jak korzystać z matrycy kolorów SVG w celu uzyskania efektu nasycenia

stosuje transformację macierzową do kanałów RGBA każdego piksela w obrazie wejściowym. Możemy użyć elementu SVG do uzyskania efektu nasycenia, wykonując poniższe czynności:

  1. Zdefiniuj dokument SVG i ustaw adres URL przestrzeni nazw SVG.
  2. Utwórz element obrazu i element filtra.
  3. Dołącz element graficzny.
  4. Utwórz element feColorMatrix i dodaj go do elementu filtrującego.
  5. Zapisz wyjściowy obraz SVG.

W poniższej sekcji opisano, jak przekształcić te kroki w kod C# i utworzyć efekt nasycenia w SVG.

Utwórz efekt nasycenia za pomocą Color Matrix w C#

Możemy stworzyć efekt nasycenia za pomocą elementu , wykonując poniższe czynności:

  1. Najpierw utwórz instancję klasy SVGDocument.
  2. Następnie uzyskaj dostęp do głównego elementu SVG i określ adres URL przestrzeni nazw dla SVG.
  3. Następnie zainicjuj obiekt klasy SVGImageElement.
  4. W międzyczasie ustaw ścieżkę obrazu i inne właściwości elementu SVGImageElement.
  5. Następnie zdefiniuj obiekt klasy SVGDefsElement i dodaj go do elementu głównego.
  6. Następnie utwórz obiekt klasy SVGFilterElement i dodaj go do elementu SVGDefsElement.
  7. Następnie zdefiniuj obiekt klasy SVGFEColorMatrixElement.
  8. Następnie ustaw wymagane atrybuty ig type: saturate
  9. Następnie dodaj element SVGFEColorMatrixElement do elementu SVGFilterElement.
  10. Na koniec zapisz wyjściowy plik SVG przy użyciu metody Save().

Poniższy przykład kodu pokazuje, jak utworzyć efekt nasycenia przy użyciu macierzy kolorów w języku C#.

// Ten przykład kodu demonstruje, jak utworzyć efekt nasycenia przy użyciu macierzy kolorów w języku C#.
// Utwórz instancję SVGDocument
var document = new SVGDocument();

// Pobierz główny element svg dokumentu
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);

// Utwórz element defs i dodaj go do elementu svgElement
Aspose.Svg.SVGDefsElement defsElement = (Aspose.Svg.SVGDefsElement)document.CreateElementNS(SvgNamespace, "defs");
svgElement.AppendChild(defsElement);

// Utwórz element filtru i dodaj go do elementu defsElement
Aspose.Svg.SVGFilterElement filterElement = (Aspose.Svg.SVGFilterElement)document.CreateElementNS(SvgNamespace, "filter");
defsElement.AppendChild(filterElement);

// Utwórz element feColorMatrix
var feColorMatrixElement = (SVGFEColorMatrixElement)document.CreateElementNS(SvgNamespace, "feColorMatrix");
feColorMatrixElement.In1.BaseVal = "SourceGraphic";
feColorMatrixElement.SetAttribute("type", "saturate");
feColorMatrixElement.SetAttribute("values", "2");
filterElement.Id = "CM";

// Dołącz do elementu filtrującego
filterElement.AppendChild(feColorMatrixElement);

// Zapisz dokument SVG
document.Save("C:\\Files\\ColorEffect.svg");
Źródło obrazu latarnia morska.jpg

Źródłowy obraz wejściowy

Efekt nasycenia przy użyciu matrycy kolorów SVG

Efekt nasycenia przy użyciu matrycy kolorów SVG w języku 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>

Uzyskaj bezpłatną licencję API

Możesz uzyskać bezpłatną tymczasową licencję, aby wypróbować bibliotekę bez ograniczeń ewaluacyjnych.

Wniosek

W tym artykule dowiedziałeś się o efekcie nasycenia na obrazach. Widzieliśmy również, jak zastosować efekt nasycenia kolorów za pomocą filtrów macierzy kolorów SVG w języku C#. Poza tym możesz dowiedzieć się więcej o Aspose.SVG for .NET korzystając z dokumentacji i poznać różne funkcje oferowane przez API. W przypadku jakichkolwiek niejasności prosimy o kontakt na naszym bezpłatnym forum pomocy technicznej.

Zobacz też