Modyfikowanie obrazów

Dithering dla obrazów rastrowych

Dithering to technika tworzenia złudzenia nowych kolorów i odcieni poprzez zmienianie wzoru kropek, które faktycznie tworzą obraz. Jest to najczęstszy sposób redukcji zakresu kolorów obrazów do 256 (lub mniej) kolorów. Aspose.PSD zapewnia obsługę ditheringu dla klasy RasterImage poprzez wprowadzenie metody Dither, która przyjmuje dwa parametry. Pierwszy to rodzaj DitheringMethod, który ma dwie możliwe opcje: FloydSteinbergDithering i ThresholdDithering. Drugi parametr dla metody Dither to BitCount typu int. BitCount definiuje rozmiar próbkowania dla wyniku ditheringu. Wartość domyślna to 1, co reprezentuje czarno-biały, podczas gdy dozwolone wartości to 1, 4, 8 generujące palety z kolejno 2, 4 i 256 kolorami.

// 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());
}

Dostosowywanie jasności, kontrastu i gammy

Dostosowywanie kolorów w obrazach cyfrowych to jedna z podstawowych funkcji, które większość bibliotek przetwarzania obrazów udostępnia. Dostosowanie kolorów można podzielić na następujące kategorie.

  1. Jasność odnosi się do jasności lub ciemności koloru. Zwiększenie jasności obrazu powoduje rozjaśnienie wszystkich kolorów, podczas gdy zmniejszenie jasności przyciemnia wszystkie kolory.
  2. Kontrast odnosi się do zwiększenia czytelności obiektów lub szczegółów na obrazie. Zwiększenie kontrastu obrazu zwiększa różnicę między obszarami jasnymi i ciemnymi, aby obszary jasne stawały się jaśniejsze, a obszary ciemne ciemniejsze. Zmniejszenie kontrastu sprawi, że obszary jaśniejsze i ciemniejsze pozostaną mniej więcej takie same, ale ogólny obraz stanie się bardziej jednolity.
  3. Gamma optymalizuje kontrast i jasność pośredniego oświetlenia, które oświetla obiekt na obrazie.

Dostosowywanie jasności

API Aspose.PSD dla .NET udostępnia metodę AdjustBrightness dla klasy RasterImage, która może być użyta do dostosowania jasności obrazu poprzez przekazanie wartości całkowitej jako parametru. Najwyższa wartość parametru oznacza jaśniejszy obraz. Oto oryginalny obraz i obraz wynikowy do porównania.

// 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);
}

Dostosowywanie kontrastu

Metoda AdjustContrast udostępniana przez klasę RasterImage może być użyta do dostosowania kontrastu obrazu, przekazując wartość zmiennoprzecinkową jako parametr.

Najwyższa wartość parametru oznacza wyższy kontrast w danym obrazie. Oto oryginalny obraz i obraz wynikowy do porównania.

// 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);
}

Dostosowywanie gammy

Metoda AdjustGamma udostępniana przez klasę RasterImage posiada dwie wersje. Jedna z przeciążeń akceptuje jedną wartość zmiennoprzecinkową i wykonuje korektę gammy dla współczynników kanałów czerwonego, niebieskiego i zielonego. Natomiast drugie przeciążenie akceptuje trzy wartości zmiennoprzecinkowe reprezentujące każdy współczynnik koloru osobno. Poniższy przykład kodu demonstruje, jak wykonać dostosowanie gammy na obrazie.

// 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);
}

Rozmyj obraz

Ten artykuł demonstruje użycie Aspose.PSD dla .NET do wykonania efektu rozmycia na obrazie. API Aspose.PSD udostępnia efektywne i łatwe w użyciu metody do osiągnięcia tego celu. Aspose.PSD dla .NET udostępnia klasę GaussianBlurFilterOptions do tworzenia efektu rozmycia na żywo. Klasa GaussianBlurFilterOptions wymaga wartości promienia i sigma do stworzenia efektu rozmycia na obrazie. Procedura do wykonania rozmycia jest prosta, jak poniżej:

  1. Wczytaj obraz za pomocą metody fabrycznej Load udostępnianej przez klasę Image.
  2. Konwertuj obraz na RasterImage.
  3. Utwórz instancję klasy GaussianBlurFilterOptions z domyślnym konstruktorem lub podaj wartości promienia i sigma w konstruktorze.
  4. Wywołaj metodę RasterImage.Filter, podając prostokąt jako granice obrazu i instancję klasy GaussianBlurFilterOptions.
  5. Zapisz wyniki.

Poniższy przykład kodu demonstruje, jak stworzyć efekt rozmycia na obrazie.

// 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());
}

Sprawdź transparentność obrazu

Ten artykuł demonstruje użycie Aspose.PSD dla .NET w celu sprawdzenia transparentności obrazu. Procedura sprawdzenia transparentności obrazu jest prosta, jak poniżej:

  1. Wczytaj obraz za pomocą metody fabrycznej Load udostępnianej przez klasę Image.
  2. Sprawdź przezroczystość obrazu, jeśli przezroczystość wynosi zero, obraz jest przezroczysty.
  3. Poniższy przykład kodu demonstruje, jak sprawdzić, czy obraz jest transparentny czy nie.
// 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.
}
}

Wprowadź kompresor GIF z utratą jakości

Wykorzystując Aspose.PSD dla .NET, programiści mogą ustawić różnicę pikseli. Kompresja GIF opiera się na „słowniku” ciągów pikseli. Normalny kodownik przeszukuje słownik, aby znaleźć najdłuższy ciąg pikseli, który dokładnie pasuje do pikseli na obrazie. Koder stratny wybiera najdłuższy ciąg pikseli, który jest „wystarczająco podobny” do pikseli na obrazie. Poniżej znajduje się prezentacja kodowa wspomnianej funkcjonalności.

// 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);
}

Wprowadź przeskalowanie bicubiczne

Przeskalowanie oznacza zmianę wymiarów pikseli obrazu. Gdy zmniejszasz próbkę, eliminujesz piksele i tym samym usuwasz informacje i szczegóły z obrazu. Gdy zwiększasz próbkę, dodajesz piksele. Adobe Photoshop dodaje te piksele za pomocą interpolacji. Ten artykuł demonstruje, jak wykonać przeskalowanie bicubiczne, korzystając z Aspose.PSD dla .NET.

Poniżej znajduje się prezentacja kodowa wspomnianej funkcjonalności.

// 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));
}

Warstwa dostosowania bilansu kolorów

Ten artykuł demonstruje użycie Aspose.PSD dla .NET do wykonania warstwy dostosowania bilansu kolorów na obrazie. Warstwa dostosowania bilansu kolorów umożliwia dokonywanie dostosowań kolorów obrazów. Przedstawia trzy kanały kolorów i ich kolory komplementarne, dzięki czemu można dostosować balans tych par, aby zmienić wygląd zdjęcia.

Poniżej znajduje się prezentacja kodowa wspomnianej funkcjonalności.

// 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);
}

Warstwa dostosowania odwrócenia

Ten artykuł demonstruje, jak wykonać warstwę dostosowania odwrócenia za pomocą Aspose.PSD dla .NET. Warstwa dostosowania to specjalny rodzaj warstwy stosowany głównie do korekty kolorów. Zamiast posiadać własną zawartość, dostosowują one informacje na warstwach pod nimi. Warstwa dostosowania odwraca efekt kolorów w obrazie, tworząc efekt negatywu.

Poniżej znajduje się prezentacja kodowa wspomnianej funkcjonalności.

// 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);
}