Modifica Immagini
Dithering per Immagini Raster
Il dithering è una tecnica per creare l’illusione di nuovi colori e sfumature variando il pattern di punti che effettivamente compongono un’immagine. È il mezzo più comune per ridurre la gamma di colori delle immagini a 256 (o meno) colori. Aspose.PSD fornisce il supporto al dithering per la classe RasterImage introducendo il metodo Dither che accetta due parametri. Il primo è di tipo DitheringMethod da applicare con due possibili opzioni: FloydSteinbergDithering e ThresholdDithering. Il secondo parametro per il metodo Dither è il BitCount in formato intero. BitCount definisce la dimensione del campionamento per il risultato del dithering. Il valore predefinito è 1 che rappresenta bianco e nero, mentre i valori consentiti sono 1, 4, 8 generando palette con rispettivamente 2, 4 e 256 colori.
// 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()); | |
} |
Regolazione Luminosità, Contrasto e Gamma
I ritocchi colore nelle immagini digitali sono una delle funzionalità principali che la maggior parte delle librerie di elaborazione delle immagini fornisce. I ritocchi colore possono essere categorizzati nei seguenti modi:
- La luminosità si riferisce alla chiarezza o scurità di un colore. Aumentare la luminosità di un’immagine illumina tutti i colori mentre diminuirla scurisce tutti i colori.
- Il contrasto si riferisce a rendere più evidenti gli oggetti o i dettagli all’interno di un’immagine. Aumentare il contrasto di un’immagine aumenta la differenza tra le aree chiare e scure in modo che le aree chiare diventino più chiare e le aree scure diventino più scure. Diminuire il contrasto farà sì che le aree più chiare e più scure rimangano approssimativamente le stesse ma l’immagine complessiva diventa più omogenea.
- Il gamma ottimizza il contrasto e la luminosità della luce indiretta che illumina un oggetto nell’immagine.
Regolazione Luminosità
Aspose.PSD fornisce il metodo AdjustBrightness per la classe RasterImage che può essere utilizzato per regolare la luminosità dell’immagine passando un valore intero come parametro. Il valore più alto del parametro indica un’immagine più luminosa. Di seguito è riportata l’immagine originale e l’immagine risultante per il confronto.
// 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); | |
} |
Regolazione Contrasto
Il metodo AdjustContrast esposto dalla classe RasterImage può essere utilizzato per regolare il contrasto di un’immagine passando un valore float come parametro.
Il valore più alto del parametro indica un contrasto più accentuato nell’immagine fornita. Di seguito è riportata l’immagine originale e l’immagine risultante per il confronto.
// 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); | |
} |
Regolazione Gamma
Il metodo AdjustGamma esposto dalla classe RasterImage ha due versioni. Uno degli overload accetta un valore float e esegue la correzione Gamma per i coefficienti dei canali rosso, blu e verde. Mentre l’altro overload accetta tre parametri float rappresentanti ciascun coefficente di colore separatamente. Il seguente esempio di codice dimostra come regolare il Gamma su un’immagine.
// 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); | |
} |
Sfocatura di un’Immagine
Questo articolo dimostra l’uso di Aspose.PSD per .NET per eseguire l’effetto Sfocatura su un’immagine. Le API di Aspose.PSD hanno esposto metodi efficienti e facili da usare per raggiungere questo obiettivo. Aspose.PSD for .NET ha esposto la classe GaussianBlurFilterOptions per creare un effetto sfocatura al volo. La classe GaussianBlurFilterOptions richiede valori di raggio e sigma per creare un effetto sfocatura su un’immagine. I passaggi per eseguire il ridimensionamento sono semplici come di seguito:
- Caricare un’immagine utilizzando il metodo di fabbrica Load esposto dalla classe Image.
- Convertire l’immagine in RasterImage.
- Creare un’istanza della classe GaussianBlurFilterOptions con il costruttore predefinito o fornire valori di raggio e sigma nel costruttore.
- Chiamare il metodo RasterImage.Filter specificando il rettangolo come limiti dell’immagine e un’istanza della classe GaussianBlurFilterOptions.
- Salvare i risultati.
Il seguente esempio di codice dimostra come creare un effetto sfocatura su un’immagine.
// 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()); | |
} |
Verificare la Trasparenza dell’Immagine
Questo articolo dimostra l’uso di Aspose.PSD per .NET per verificare la trasparenza dell’immagine. I passaggi per verificare la trasparenza dell’immagine sono semplici come di seguito:
- Caricare un’immagine utilizzando il metodo di fabbrica Load esposto dalla classe Image.
- Verificare l’opacità dell’immagine; se l’opacità è zero, l’immagine è trasparente.
- Il seguente esempio di codice dimostra come verificare se l’immagine è trasparente o meno.
// 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. | |
} | |
} |
Implementare un Compressore GIF Lossy
Utilizzando Aspose.PSD per .NET, gli sviluppatori possono impostare una differenza di pixel. La compressione GIF si basa su un “dizionario” di stringhe di pixel viste. Un codificatore normale cerca nel dizionario la stringa più lunga di pixel che corrisponde esattamente ai pixel nell’immagine. Un codificatore lossy sceglie la stringa più lunga di pixel che è “abbastanza simile” ai pixel nell’immagine. Di seguito è riportato il codice dimostrativo della suddetta funzionalità.
// 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); | |
} |
Implementare il Ri-dimensionamento Bicubico
Il ri-dimensionamento significa che stai cambiando le dimensioni dei pixel di un’immagine. Quando campionata, stai eliminando pixel e quindi cancellando informazioni e dettagli dall’immagine. Quando ingrandisci, stai aggiungendo pixel. Photoshop aggiunge questi pixel usando l’interpolazione. Questo articolo dimostra come puoi eseguire il Ri-dimensionamento Bicubico utilizzando Aspose.PSD per .NET.
Di seguito è riportato il codice dimostrativo della suddetta funzionalità.
// 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)); | |
} |
Livello di Regolazione del Bilanciamento del Colore
Questo articolo dimostra l’uso di Aspose.PSD per .NET per eseguire il livello di regolazione del bilanciamento del colore su un’immagine. Il livello di regolazione del bilanciamento del colore ti dà la possibilità di apportare regolazioni alla colorazione delle immagini. Presenta i tre canali di colore e i loro colori complementari e puoi regolare il bilanciamento di questi coppie per cambiare l’aspetto di una foto.
Di seguito è riportato il codice dimostrativo della suddetta funzionalità.
// 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); | |
} |
Livello di Regolazione dell’Invertito
Questo articolo dimostra come puoi eseguire il livello di regolazione invertito utilizzando Aspose.PSD for .NET. Un livello di regolazione è un tipo speciale di livello utilizzato principalmente per la correzione del colore. Piuttosto che avere un proprio contenuto, regolano le informazioni sui livelli sottostanti. Il livello di regolazione invertito crea un effetto negativo di una foto invertendo i colori di un’immagine.
Di seguito è riportato il codice dimostrativo della suddetta funzionalità.
// 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); | |
} |