اثر اشباع با استفاده از ماتریس رنگی SVG در سی شارپ

آیا تا به حال توجه کرده اید که چگونه برخی از تصاویر در اینترنت بسیار روشن به نظر می رسند، یا رنگ ها کاملاً مناسب نیستند؟ این به دلیل پدیده ای به نام اثر اشباع است. در این مقاله نحوه دستیابی به افکت اشباع با ماتریس رنگی SVG در سی شارپ را خواهیم آموخت.

در ابتدا، ما با اثر اشباع آشنا خواهیم شد و نگاهی به C# SVG API برای اعمال فیلتر ماتریس رنگی SVG خواهیم داشت. در مرحله بعد، مراحل چگونگی رفع افکت اشباع را با استفاده از ماتریس رنگ برای تنظیم رنگ ها در یک تصویر طی می کنیم. در نهایت، پیوندهای مفیدی را برای پیشرفت بیشتر ارائه خواهیم کرد. پس بیایید شروع کنیم!

این مقاله باید موضوعات زیر را پوشش دهد:

  1. اثر اشباع و ماتریس رنگ SVG چیست
  2. [C# SVG API برای اثر اشباع با استفاده از ماتریس رنگ3
  3. [نحوه استفاده از ماتریس رنگی SVG برای اثر اشباع4
  4. ایجاد افکت اشباع با استفاده از ماتریس رنگ در C#

اثر اشباع و ماتریس رنگی SVG چیست؟

افکت اشباع یک تکنیک رایج پردازش تصویر است که برای زنده‌تر نشان دادن تصویر استفاده می‌شود. شدت رنگ را توصیف می کند.

اثر اشباع ناشی از روشی است که مغز ما رنگ را پردازش می کند. وقتی تصویری را می بینیم، مغز ما به طور خودکار رنگ ها را تنظیم می کند تا طبیعی تر به نظر برسند. با این حال، زمانی که یک تصویر دارای رنگ بیش از حد است، یا رنگ‌ها به طور یکنواخت متعادل نیستند، مغز ما برای پردازش تصویر مشکل‌تری دارد که می‌تواند باعث اثر اشباع شود.

ما می توانیم با استفاده از عنصر فیلتر SVG به اثر اشباع دست یابیم. این یک فیلتر برای تبدیل رنگ برای تغییر رنگ ها بر اساس یک ماتریس تبدیل فراهم می کند.

C# SVG API برای اثر اشباع با استفاده از ماتریس رنگ

اثر اشباع یک مورد خاص از استفاده از ماتریس رنگ است. ما از Aspose.SVG for .NET API برای استفاده از عملیات اشباع فیلتر اولیه استفاده خواهیم کرد. API اجازه بارگیری، تجزیه، رندر، ایجاد و تبدیل فایل‌های SVG به [فرمت‌های محبوب7 را بدون هیچ گونه وابستگی نرم‌افزاری می‌دهد.

لطفاً یا DLL API را دانلود کنید یا آن را با استفاده از NuGet نصب کنید.

PM> Install-Package Aspose.SVG

نحوه استفاده از ماتریس رنگی SVG برای اثر اشباع

یک تبدیل ماتریسی به کانال های RGBA هر پیکسل در تصویر ورودی اعمال می کند. با دنبال کردن مراحل زیر می‌توانیم از عنصر SVG برای اثر اشباع استفاده کنیم:

  1. یک سند SVG تعریف کنید و URL فضای نام SVG را تنظیم کنید.
  2. یک عنصر تصویر و یک عنصر فیلتر ایجاد کنید.
  3. المان گرافیکی را اضافه کنید.
  4. یک عنصر feColorMatrix ایجاد کنید و آن را به عنصر فیلتر اضافه کنید.
  5. تصویر خروجی SVG را ذخیره کنید.

در بخش زیر نحوه تبدیل این مراحل به کد C# و ایجاد یک افکت اشباع در SVG توضیح داده شده است.

ایجاد افکت اشباع با استفاده از ماتریس رنگ در سی شارپ

با دنبال کردن مراحل زیر می‌توانیم با استفاده از عنصر یک افکت اشباع ایجاد کنیم:

  1. ابتدا یک نمونه از کلاس SVGDocument ایجاد کنید.
  2. سپس، به عنصر root SVG دسترسی پیدا کنید و URL فضای نام را برای SVG مشخص کنید.
  3. سپس، شی کلاس SVGImageElement را مقداردهی اولیه کنید.
  4. در همین حال، یک مسیر تصویر و سایر خصوصیات را برای SVGImageElement تنظیم کنید.
  5. سپس شیء کلاس SVGDefsElement را تعریف کرده و به عنصر ریشه اضافه کنید.
  6. سپس، شی کلاس SVGFilterElement را ایجاد کرده و آن را به SVGDefsElement اضافه کنید.
  7. سپس شیء کلاس SVGFEColorMatrixElement را تعریف کنید.
  8. سپس، ویژگی های مورد نیاز ig type: saturate را تنظیم کنید
  9. پس از آن، SVGFEColorMatrixElement را به SVGFilterElement اضافه کنید.
  10. در نهایت فایل SVG خروجی را با استفاده از روش Save() ذخیره کنید.

نمونه کد زیر نحوه ایجاد افکت اشباع با ماتریس رنگ در سی شارپ را نشان می دهد.

// این مثال کد نحوه ایجاد افکت اشباع با ماتریس رنگ در سی شارپ را نشان می دهد.
// یک نمونه از SVGDocument ایجاد کنید
var document = new SVGDocument();

// عنصر root 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");
منبع تصویر lighthouse.jpg

تصویر ورودی منبع

اثر اشباع با استفاده از ماتریس رنگی SVG

اثر اشباع با استفاده از ماتریس رنگی SVG در سی شارپ

<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 برای دات‌نت با استفاده از [اسناد17 اطلاعات بیشتری کسب کنید و ویژگی‌های مختلف ارائه شده توسط API را بررسی کنید. در صورت وجود هرگونه ابهامی، لطفاً با ما در [تالار گفتمان پشتیبانی رایگان18 تماس بگیرید.

همچنین ببینید