Промяна на изображения

Dithering за растерни изображения

Дитърингът е техника за създаване на илюзия за нови цветове и нюанси, като варира модела на точките, които наистина създават изображение. Това е най-честният начин за намаляване на цветовия обхват на изображенията до 256 (или по-малко) цвята. Aspose.PSD предоставя поддръжка на дитъринг за класа RasterImage, като въвежда метода Dither, който приема два параметъра. Първият е от тип DitheringMethod, който да се приложи, с две възможни опции FloydSteinbergDithering и ThresholdDithering. Вторият параметър на метода Dither е BitCount в цяло число. 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());
}

Регулиране на яркостта, контраста и гамата

Корекциите на цветовете в цифровите изображения са една от основните функции, които повечето библиотеки за обработка на изображения предоставят. Корекциите на цветовете могат да бъдат категоризирани по следния начин.

  1. Яркостта се отнася до светлостта или тъмнотата на цвета. Увеличаването на яркостта на изображение оразглежда всички цветове, докато намаляването на яркостта затъмнява всички цветове.
  2. Контрастът се отнася до правенето на обектите или детайлите в изображението по-очевидни. Увеличаването на контраста на изображението увеличава разликата между светлината и тъмните области, така че светлите области стават по-светли, а тъмните области стават по-тъмни. Намаляването на контраста ще запази светли и тъмни области приблизително същите, но цялото изображение става по-еднородно.
  3. Гамата оптимизира контраста и яркостта на непосредствената светлина, която осветява обект в изображението.

Регулиране на яркостта

Aspose.PSD за .NET API предоставя метода 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 за .NET за извършване на размазващ ефект върху изображение. Aspose.PSD APIs са изложили ефективни и лесни за използване методи за постигане на тази цел. Aspose.PSD за .NET е изложило класа GaussianBlurFilterOptions, за да се създаде размазващ ефект на живо. Класът GaussianBlurFilterOptions изисква стойности на радиуса и сигмата, за да създаде размазващ ефект върху изображението. Стъпките за извършване на преоразмеряване са толкова прости, както следва:

  1. Заредете изображение чрез метода на фабриката Load, изложен от класа Image.
  2. Преобразувайте изображението в RasterImage.
  3. Създайте екземпляр на класа GaussianBlurFilterOptions с конструктора по подразбиране или предоставете радиус и стойности на сигмата в конструктора.
  4. Извикайте метода Filter на RasterImage, като посочите правоъгълника като граници на изображението и екземпляра на класа GaussianBlurFilterOptions.
  5. Запазете резултатите.

Следният пример на код демонстрира как да се създаде размазващ ефект върху изображение.

// 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 за .NET за проверка на прозрачността на изображение. Стъпките за проверка на прозрачността на изображението са толкова прости, както следва:

  1. Заредете изображение чрез метода на фабриката Load, изложен от класа Image.
  2. Проверете прозрачността на изображението, ако прозрачността е нула, изображението е прозрачно. Следният пример на код демонстрира как да се провери дали изображението е прозрачно.
// 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.
}
}

Използване на компресор за загуби в 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);
}

Изпълнение на бикубичен ресеймпър

Ресеймпълването означава, че променяте пикселните размери на изображение. Когато намалявате, елиминирате пикселите и следователно изтривате информация и детайли от изображението си. Когато увеличавате, добавяте пиксели. Photoshop добавя тези пиксели, като използва интерполация. Тази статия демонстрира как можете да извършите бикубично ресеймпване, като използвате Aspose.PSD за .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);
}