Bilder bearbeiten
Dithering für Rasterbilder
Dithering ist eine Technik zur Erzeugung der Illusion neuer Farben und Schattierungen durch Variation des Punktmusters, das tatsächlich ein Bild erzeugt. Es ist das häufigste Mittel, um den Farbbereich von Bildern auf 256 (oder weniger) Farben zu reduzieren. Aspose.PSD bietet die Unterstützung für Dithering für die Klasse RasterImage, indem die Methode Dither eingeführt wird, die zwei Parameter akzeptiert. Der erste ist vom Typ DitheringMethod, der mit zwei möglichen Optionen angewendet werden soll: FloydSteinbergDithering und ThresholdDithering. Der zweite Parameter für die Methode Dither ist die Bit-Anzahl als Ganzzahl. BitCount definiert die Abtastgröße für das Dithering-Ergebnis. Der Standardwert ist 1, der Schwarz und Weiß darstellt, während die erlaubten Werte 1, 4, 8 sind, die Paletten mit 2, 4 und 256 Farben generieren, bzw.
// 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()); | |
} |
Helligkeit, Kontrast und Gamma anpassen
Farbanpassungen in digitalen Bildern sind eine der wichtigsten Funktionen, die die meisten Bildverarbeitungsbibliotheken bereitstellen. Farbanpassungen können in folgende Kategorien eingeteilt werden.
- Helligkeit bezieht sich auf die Helligkeit oder Dunkelheit einer Farbe. Durch Erhöhen der Helligkeit eines Bildes werden alle Farben aufgehellt, während durch Verringern der Helligkeit alle Farben verdunkelt werden.
- Kontrast steht für die Hervorhebung von Objekten oder Details innerhalb eines Bildes. Durch Erhöhen des Kontrasts eines Bildes wird der Unterschied zwischen hellen und dunklen Bereichen erhöht, sodass die hellen Bereiche heller und die dunklen Bereiche dunkler werden. Durch Verringern des Kontrasts bleiben die helleren und dunkleren Bereiche etwa gleich, aber das Gesamtbild wird homogener.
- Gamma optimiert den Kontrast und die Helligkeit der indirekten Beleuchtung, die ein Objekt im Bild beleuchtet.
Helligkeit anpassen
Die Aspose.PSD für .NET API bietet die Methode AdjustBrightness für die Klasse RasterImage, die verwendet werden kann, um die Helligkeit des Bildes durch Übergabe eines Ganzzahlwerts als Parameter anzupassen. Der höchste Parameterwert steht für ein helleres Bild. Hier ist das Originalbild und das resultierende Bild zum Vergleich.
// 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); | |
} |
Kontrast anpassen
Die von der Klasse RasterImage bereitgestellte Methode AdjustContrast kann verwendet werden, um den Kontrast eines Bildes durch Übergabe eines Gleitkommawerts als Parameter anzupassen.
Der höchste Parameterwert steht für einen höheren Kontrast im gegebenen Bild. Hier ist das Originalbild und das resultierende Bild zum Vergleich.
// 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); | |
} |
Gamma anpassen
Die von der Klasse RasterImage bereitgestellte Methode AdjustGamma hat zwei Versionen. Eine der Überladungen akzeptiert einen Gleitkommawert und führt die Gammakorrektur für die Koeffizienten der Rot-, Blau- und Grünkanäle durch. Die andere Überladung akzeptiert drei Gleitkommawerte, die jeweils einen Farbkoeffizienten separat darstellen. Das folgende Codebeispiel zeigt, wie die Gamma-Anpassung an einem Bild durchgeführt wird.
// 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); | |
} |
Ein Bild verwischen
Dieser Artikel zeigt die Verwendung von Aspose.PSD für .NET, um einen Weichzeichnungseffekt auf einem Bild durchzuführen. Aspose.PSD APIs haben effiziente und benutzerfreundliche Methoden zur Erzielung dieses Ziels freigelegt. Aspose.PSD für .NET hat die Klasse GaussianBlurFilterOptions bereitgestellt, um einen Weichzeichnungseffekt in Echtzeit zu erzeugen. Die GaussianBlurFilterOptions-Klasse benötigt Radius- und Sigma-Werte, um einen Weichzeichnungseffekt auf einem Bild zu erzeugen. Die Schritte zum Durchführen einer Skalierung sind so einfach wie unten aufgeführt:
- Laden Sie ein Bild mit der von der Image-Klasse freigelegten Load-Fabrikmethode.
- Konvertieren Sie das Bild in ein RasterImage.
- Erstellen Sie eine Instanz der GaussianBlurFilterOptions-Klasse mit dem Standardkonstruktor oder geben Sie Radius- und Sigma-Werte im Konstruktor an.
- Rufen Sie die Methode RasterImage.Filter auf und geben Sie das Rechteck als Bildgrenzen und die Instanz der GaussianBlurFilterOptions-Klasse an.
- Speichern Sie die Ergebnisse.
Das folgende Codebeispiel zeigt, wie ein Weichzeichnungseffekt auf einem Bild erzeugt wird.
// 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()); | |
} |
Transparenz eines Bildes überprüfen
Dieser Artikel zeigt die Verwendung von Aspose.PSD für .NET, um die Transparenz eines Bildes zu überprüfen. Die Schritte zur Überprüfung der Bildtransparenz sind so einfach wie unten aufgeführt:
- Laden Sie ein Bild mit der von der Image-Klasse freigelegten Fabrikmethode Load.
- Überprüfen Sie die Bilddeckkraft. Wenn die Deckkraft null ist, ist das Bild transparent.
- Das folgende Codebeispiel zeigt, wie überprüft wird, ob das Bild transparent ist oder nicht.
// 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. | |
} | |
} |
Implementieren eines verlustbehafteten GIF-Komprimierers
Mit Aspose.PSD für .NET können Entwickler einen Pixelunterschied festlegen. Die Kompression von GIF basiert auf einem “Wörterbuch” von Zeichenfolgen von gesehenen Pixeln. Der normale Encoder sucht im Wörterbuch nach der längsten Zeichenfolge von Pixeln, die genau den Pixeln im Bild entsprechen. Der verlustbehaftete Encoder wählt die längste Zeichenfolge von Pixeln aus, die “ähnlich genug” zu Pixeln im Bild sind. Unten finden Sie die Code-Demonstration dieser Funktionalität.
// 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); | |
} |
Implementieren der Bicubic-Neubemusterung
Neubemusterung bedeutet, dass Sie die Pixelabmessungen eines Bildes ändern. Beim Herunterskalieren werden Pixel eliminiert und somit Informationen und Details aus Ihrem Bild gelöscht. Beim Hochskalieren werden Pixel hinzugefügt. Photoshop fügt diese Pixel durch Interpolation hinzu. Dieser Artikel zeigt, wie Sie die Bicubic-Neubemusterung mithilfe von Aspose.PSD für .NET durchführen können.
Unten finden Sie die Code-Demonstration dieser Funktionalität.
// 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)); | |
} |
Farbbalance-Anpassungsebene
Dieser Artikel zeigt die Verwendung von Aspose.PSD für .NET, um die Farbbalance-Anpassungsebene auf einem Bild durchzuführen. Die Farbbalance-Anpassungsebene ermöglicht es Ihnen, Anpassungen an der Farbgebung ihrer Bilder vorzunehmen. Sie präsentiert die drei Farbkanäle und ihre Komplementärfarben, und Sie können das Gleichgewicht dieser Paare anpassen, um das Erscheinungsbild eines Fotos zu ändern.
Unten finden Sie die Code-Demonstration dieser Funktionalität.
// 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); | |
} |
Invertieren der Anpassungsebene
Dieser Artikel zeigt, wie Sie die Invertieren-Anpassungsebene mithilfe von Aspose.PSD für .NET durchführen können. Eine Anpassungsebene ist eine spezielle Art von Ebene, die hauptsächlich zur Farbkorrektur verwendet wird. Anstatt einen eigenen Inhalt zu haben, passt sie die Informationen auf den darunter liegenden Ebenen an. Die Invertieren-Anpassungsebene erzeugt einen Negativ-Effekt, indem sie die Farben eines Bildes umkehrt.
Unten finden Sie die Code-Demonstration dieser Funktionalität.
// 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); | |
} |