تعديل الصور
تخفيت الصور النقطية
التخفيت هو تقنية لخلق وهم من الألوان والظلال الجديدة من خلال تغيير نمط النقاط التي تخلق بالفعل صورة. إنها أكثر الوسائل شيوعًا لتقليل نطاق الألوان للصور إلى 256 لون (أو أقل). توفر Aspose.PSD دعم التخفيت لفئة RasterImage عن طريق إدخال طريقة الخفيت التي تقبل المعلمتين. الأولى من نوع DitheringMethod المراد تطبيقه مع خيارين ممكنين هما FloydSteinbergDithering و ThresholdDithering. المعامل الثاني لطريقة [Dither(https://reference.aspose.com/psd/net/aspose.psd/rasterimage/methods/dither) هو عدد البتات بالجدول الصحيح. يحدد BitCount حجم العينة لنتيجة الخفيت. القيمة الافتراضية هي 1 التي تمثل الأسود والأبيض، حيث القيم المسموح بها هي 1، 4، 8 توليد لوحات ألوان مع 2، 4 و 256 لونًا على التوالي.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"SampleImage_out.bmp"; | |
// Load an existing image into an instance of RasterImage class | |
using (var image = (PsdImage)Image.Load(sourceFile)) | |
{ | |
// Peform Floyd Steinberg dithering on the current image and Save the resultant image | |
image.Dither(DitheringMethod.ThresholdDithering, 4); | |
image.Save(destName, new BmpOptions()); | |
} |
تعديل السطوع والتباين والجاما
التعديلات اللونية في الصور الرقمية هي أحد الميزات الأساسية التي تقدمها معظم مكتبات معالجة الصور. يمكن تصنيف التعديلات اللونية في ما يلي.
- السطوع يشير إلى فاتح أو غامق من لون. زيادة سطوع الصورة يضيء جميع الألوان بينما يقلل السطوع يظلم جميع الألوان.
- التباين يشير إلى جعل الكائنات أو التفاصيل في الصورة أكثر وضوحًا. زيادة التباين في الصورة يقوي الفارق بين المناطق الفاتحة والمظلمة بحيث تصبح المناطق الفاتحة أفتح والمناطق الداكنة تصبح أغمق. تقليل التباين سيجعل المناطق الفاتحة والداكنة تظل تقريبًا نفسها ولكن الصورة بشكل عام تصبح أكثر تجانسًا.
- الجاما يحسن التباين والسطوع للإضاءة غير المباشرة التي تضيء كائنًا في الصورة.
ضبط السطوع
يوفر Aspose.PSD API لـ .NET الطريقة AdjustBrightness لفئة RasterImage التي يمكن استخدامها لضبط سطوع الصورة عن طريق تمرير قيمة صحيحة كمعلمة. أعلى قيمة معلمة تشير إلى صورة أكثر إشراقًا. هنا هي الصورة الأصلية والصورة الناتجة للمقارنة.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"AdjustBrightness_out.tiff"; | |
using (var image = (PsdImage)Image.Load(sourceFile)) | |
{ | |
RasterCachedImage rasterImage = image; | |
// Set the brightness value. The accepted values of brightness are in the range [-255, 255]. | |
rasterImage.AdjustBrightness(-50); | |
TiffOptions tiffOptions = new TiffOptions(TiffExpectedFormat.Default); | |
rasterImage.Save(destName, tiffOptions); | |
} |
ضبط التباين
تشتمل الطريقة AdjustContrast التي تعرضها فئة RasterImage على ضبط تباين الصورة عن طريق تمرير قيمة عائمة كمعلمة.
القيمة العائمة الأعلى تشير إلى تباين أعلى في الصورة المعطاة. هنا هي الصورة الأصلية والصورة الناتجة للمقارنة.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"AdjustContrast_out.tiff"; | |
// Load an existing image into an instance of RasterImage class | |
using (var image = Image.Load(sourceFile)) | |
{ | |
// Cast object of Image to RasterImage | |
RasterImage rasterImage = (RasterImage)image; | |
// Check if RasterImage is cached and Cache RasterImage for better performance | |
if (!rasterImage.IsCached) | |
{ | |
rasterImage.CacheData(); | |
} | |
// Adjust the contrast | |
rasterImage.AdjustContrast(50); | |
// Create an instance of TiffOptions for the resultant image, Set various properties for the object of TiffOptions and Save the resultant image to TIFF format | |
TiffOptions tiffOptions = new TiffOptions(TiffExpectedFormat.Default); | |
tiffOptions.BitsPerSample = new ushort[] { 8, 8, 8 }; | |
tiffOptions.Photometric = TiffPhotometrics.Rgb; | |
rasterImage.Save(destName, tiffOptions); | |
} |
ضبط الجاما
تعرض الطريقة AdjustGamma التي تعرضها فئة RasterImage نسختين. إحدى الإصدارات تقبل قيمة عائمة وتنفذ تصحيح جاما لمعاملات قناة الأحمر والأزرق والأخضر. في حين أن الإصدار الآخر يقبل ثلاثة معلمات عائمة تمثل كل معامل لون على حدة. يوضح الكود التالي كيفية ضبط جاما على صورة.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"AdjustGamma_out.tiff"; | |
// Load an existing image into an instance of RasterImage class | |
using (var image = Image.Load(sourceFile)) | |
{ | |
// Cast object of Image to RasterImage | |
RasterImage rasterImage = (RasterImage)image; | |
// Check if RasterImage is cached and Cache RasterImage for better performance | |
if (!rasterImage.IsCached) | |
{ | |
rasterImage.CacheData(); | |
} | |
// Adjust the gamma | |
rasterImage.AdjustGamma(2.2f, 2.2f, 2.2f); | |
// Create an instance of TiffOptions for the resultant image, Set various properties for the object of TiffOptions and Save the resultant image to TIFF format | |
TiffOptions tiffOptions = new TiffOptions(TiffExpectedFormat.Default); | |
tiffOptions.BitsPerSample = new ushort[] { 8, 8, 8 }; | |
tiffOptions.Photometric = TiffPhotometrics.Rgb; | |
rasterImage.Save(destName, tiffOptions); | |
} |
تحديش سطح الصورة
توضح هذه المقالة استخدام Aspose.PSD for .NET لأداء تأثير تحديش على صورة. لقد عرضت واجهات برمجة التطبيقات Aspose.PSD لـ .NET طرقًا فعالة وسهلة الاستخدام لتحقيق هذا الهدف. لقد عرضت Aspose.PSD for .NET طبقة GaussianBlurFilterOptions لإنشاء تأثير تحديش على الطاير. تحتاج فئة GaussianBlurFilterOptions إلى قيم نصف قطر وسيجما لإنشاء تأثير تحديش على صورة. الخطوات لأداء تغيير الحجم بسيطة كما يلي:
- قم بتحميل صورة باستخدام طريقة Load المعرضة من قبل فئة الصورة.
- قم بتحويل الصورة إلى RasterImage.
- قم بإنشاء مثيل من فئة GaussianBlurFilterOptions بناء على البيانات أو قدم قيم نصف قطر وسيجما في البناء.
- استدعاء طريقة RasterImage.Filter مع تحديد المستطيل كحدود صورة ومثيل فئة GaussianBlurFilterOptions.
- احفظ النتائج.
الكود التالي يوضح كيفية إنشاء تأثير تحديش على صورة.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"BlurAnImage_out.gif"; | |
// Load an existing image into an instance of RasterImage class | |
using (var image = Image.Load(sourceFile)) | |
{ | |
// Convert the image into RasterImage, | |
//Pass Bounds[rectangle] of image and GaussianBlurFilterOptions instance to Filter method and Save the results | |
RasterImage rasterImage = (RasterImage)image; | |
rasterImage.Filter(rasterImage.Bounds, new GaussianBlurFilterOptions(15, 15)); | |
rasterImage.Save(destName, new GifOptions()); | |
} |
التحقق من شفافيّة الصورة
توضح هذه المقالة استخدام Aspose.PSD for .NET للتحقق من شفافية الصورة. الخطوات للتحقق من شفافية الصورة بسيطة كما يلي:
- تحميل الصورة باستخدام الطريقة المعرضة Load من قبل فئة Image.
- التحقق من شفافية الصورة إذا كانت شفافية الصورة صفرًا فإن الصورة شفافة.
- الكود التالي يوضح كيفية التحقق من شفافية الصورة.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"AdjustBrightness_out.tiff"; | |
// Load an existing image into an instance of RasterImage class | |
using (PsdImage image = (PsdImage)Image.Load(sourceFile)) | |
{ | |
float opacity = image.ImageOpacity; | |
Console.WriteLine(opacity); | |
if (opacity == 0) | |
{ | |
// The image is fully transparent. | |
} | |
} |
تطبيق ضاغط Lossy GIF
يمكن للمطورين باستخدام Aspose.PSD لـ .NET تحديد فارق البكسل. تستند ضغطات GIF على “قاموس” يتضمن سلاسل من نقاط البكسل المرئية. يبحث المرشح العادي في القاموس عن أطول سلسلة من النقاط القابلة للمطابقة بالضبط للنقاط في الصورة. يختار المرشح القاسي أطول سلسلة من النقاط القابلة للمطابقة “بما فيه الكفاية” للنقاط في الصورة. أدناه توضيح الكود لهذه الوظيفة.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string sourceFile = dataDir + @"sample.psd"; | |
string destName = dataDir + @"anim_lossy-200.gif"; | |
GifOptions gifExport = new GifOptions(); | |
// Load an existing image into an instance of RasterImage class | |
using (var image = Image.Load(sourceFile)) | |
{ | |
gifExport.MaxDiff = 80; | |
image.Save("anim_lossy-80.gif", gifExport); | |
gifExport.MaxDiff = 200; | |
image.Save(destName, gifExport); | |
} |
تنفيذ إعادة تحجيم Bicubic
التحجيم يعني أنك تغيّر أبعاد البكسل لصورة. عند الإنقاص، أنت تقوم بحذف البكسل وبالتالي تحذف المعلومات والتفاصيل من الصورة. عند الزيادة، أنت تضيف البكسل. يضيف Photoshop هذه البكسل عبر تحسين التداخل. توضح هذه المقالة كيف يمكنك القيام بتنفيذ إعادة تحجيم Bicubic باستخدام Aspose.PSD for .NET.
أدناه توضيح الكود لهذه الوظيفة.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
string destNameCubicConvolution = dataDir + "ResamplerCubicConvolutionStripes_after.psd"; | |
// Load an existing image into an instance of PsdImage class | |
using (PsdImage image = (PsdImage)Image.Load(sourceFile)) | |
{ | |
image.Resize(300, 300, ResizeType.CubicConvolution); | |
image.Save(destNameCubicConvolution, new PsdOptions(image)); | |
} | |
string destNameCatmullRom = dataDir + "ResamplerCatmullRomStripes_after.psd"; | |
// Load an existing image into an instance of PsdImage class | |
using (PsdImage image = (PsdImage)Image.Load(sourceFile)) | |
{ | |
image.Resize(300, 300, ResizeType.CatmullRom); | |
image.Save(destNameCatmullRom, new PsdOptions(image)); | |
} | |
string destNameMitchell = "ResamplerMitchellStripes_after.psd"; | |
// Load an existing image into an instance of PsdImage class | |
using (PsdImage image = (PsdImage)Image.Load(sourceFile)) | |
{ | |
image.Resize(300, 300, ResizeType.Mitchell); | |
image.Save(destNameMitchell, new PsdOptions(image)); | |
} | |
string destNameCubicBSpline = "ResamplerCubicBSplineStripes_after.psd"; | |
// Load an existing image into an instance of PsdImage class | |
using (PsdImage image = (PsdImage)Image.Load(sourceFile)) | |
{ | |
image.Resize(300, 300, ResizeType.CubicBSpline); | |
image.Save(destNameCubicBSpline, new PsdOptions(image)); | |
} | |
string destNameSinC = "ResamplerSinCStripes_after.psd"; | |
// Load an existing image into an instance of PsdImage class | |
using (PsdImage image = (PsdImage)Image.Load(sourceFile)) | |
{ | |
image.Resize(300, 300, ResizeType.SinC); | |
image.Save(destNameSinC, new PsdOptions(image)); | |
} | |
string destNameBell = "ResamplerBellStripes_after.psd"; | |
// Load an existing image into an instance of PsdImage class | |
using (PsdImage image = (PsdImage)Image.Load(sourceFile)) | |
{ | |
image.Resize(300, 300, ResizeType.Bell); | |
image.Save(destNameBell, new PsdOptions(image)); | |
} |
طبقة تعديل توازن الألوان
توضح هذه المقالة استخدام Aspose.PSD لـ .NET لتنفيذ طبقة تعديل توازن الألوان على صورة. تتيح طبقة تعديل توازن الألوان القدرة على إجراء تعديلات على تلوين الصور. تقدم الطبقة ثلاث قنوات ألوان وألوانها المكملة ويمكنك ضبط توازن هذه الأزواج لتغيير مظهر الصورة.
أدناه توضيح الكود لهذه الوظيفة.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
var outputPath = dataDir + "ColorBalance_out.psd"; | |
using (var im = (FileFormats.Psd.PsdImage)Image.Load(filePath)) | |
{ | |
foreach (var layer in im.Layers) | |
{ | |
var cbLayer = layer as ColorBalanceAdjustmentLayer; | |
if (cbLayer != null) | |
{ | |
cbLayer.ShadowsCyanRedBalance = 30; | |
cbLayer.ShadowsMagentaGreenBalance = -15; | |
cbLayer.ShadowsYellowBlueBalance = 40; | |
cbLayer.MidtonesCyanRedBalance = -90; | |
cbLayer.MidtonesMagentaGreenBalance = -25; | |
cbLayer.MidtonesYellowBlueBalance = 20; | |
cbLayer.HighlightsCyanRedBalance = -30; | |
cbLayer.HighlightsMagentaGreenBalance = 67; | |
cbLayer.HighlightsYellowBlueBalance = -95; | |
cbLayer.PreserveLuminosity = true; | |
} | |
} | |
im.Save(outputPath); | |
} |
طبقة تعديل العكس
توضح هذه المقالة كيف يمكنك تنفيذ طبقة تعديل العكس باستخدام Aspose.PSD لـ .NET. طبقة التعديل هي نوع خاص من الطبقات يستخدم بشكل رئيسي لتصحيح الألوان. بدلاً من وجود محتوى خاص بهم، يقومون بضبط المعلومات على الطبقات تحتهم. تعمل طبقة التعديل على تحويل تأثير تأثير صورة سلبيًا بعكس ألوان الصورة.
أدناه توضيح الكود لهذه الوظيفة.
// For complete examples and data files, please go to https://github.com/aspose-psd/Aspose.PSD-for-.NET | |
var outputPath = dataDir + "InvertStripes_after.psd"; | |
using (var im = (PsdImage)Image.Load(filePath)) | |
{ | |
im.AddInvertAdjustmentLayer(); | |
im.Save(outputPath); | |
} |