W świecie sztuki cyfrowej i fotografii, tworzenie efektów wintage i artystyczne może oddychać nowe życie do starych lub płaskich obrazów. Aspose.Imaging dla .NET oferuje potężny zestaw narzędzi do osiągnięcia tego, umożliwiając deweloperom zastosowanie różnych technik przetwarzania obrazu, takich jak tony sepia, wchłanianie, blurring i więcej.
Pełny przykład
Aby zacząć, przejdźmy do kompletnego przykładu, który pokazuje, jak zastosować wiele efektów do obrazu w jednym czasie. ta sekcja przejdzie przez cały proces od ładowania obrazy do oszczędzania go z pożądanymi efektami zastosowanymi.
// File: Program.cs
// NuGet: Aspose.Imaging
using System;
using System.IO;
using Aspose.Imaging;
using Aspose.Imaging.ImageOptions;
using Aspose.Imaging.ImageFilters.FilterOptions;
namespace ArtisticEffectsDemo
{
public static class Program
{
public static void Main(string[] args)
{
// Input and output
var input = args.Length > 0 ? args[0] : "input.jpg";
var outDir = args.Length > 1 ? args[1] : "out";
Directory.CreateDirectory(outDir);
// Optional: enable disk cache for large images/batches
// Aspose.Imaging.Cache.CacheType = Aspose.Imaging.Cache.CacheType.CacheOnDisk;
// Aspose.Imaging.Cache.CacheFolder = Path.GetFullPath(".imaging-cache");
// Aspose.Imaging.Cache.CacheSize = 512L * 1024 * 1024; // 512 MB
// 1) Sepia (pixel-based)
using (var img = Image.Load(input))
{
var raster = img as RasterImage
?? throw new InvalidOperationException("Not a raster image.");
ApplySepiaInPlace(raster);
raster.Save(Path.Combine(outDir, "sepia.png"), new PngOptions());
}
// 2) Gaussian blur (kernel filter)
using (var img = Image.Load(input))
{
var raster = img as RasterImage
?? throw new InvalidOperationException("Not a raster image.");
// Kernel size must be an odd positive value. Sigma controls smoothing strength.
var blur = new GaussianBlurFilterOptions(size: 5, sigma: 3.0);
raster.Filter(raster.Bounds, blur);
raster.Save(Path.Combine(outDir, "blur.png"), new PngOptions());
}
// 3) Emboss (convolution filter with custom kernel)
using (var img = Image.Load(input))
{
var raster = img as RasterImage
?? throw new InvalidOperationException("Not a raster image.");
// A classic 3x3 emboss kernel that simulates light from top-left
var kernel = new double[,]
{
{ -2, -1, 0 },
{ -1, 1, 1 },
{ 0, 1, 2 }
};
var emboss = new ConvolutionFilterOptions(kernel);
raster.Filter(raster.Bounds, emboss);
raster.Save(Path.Combine(outDir, "emboss.png"), new PngOptions());
}
Console.WriteLine("Effects created in: " + Path.GetFullPath(outDir));
}
/// <summary>
/// In-place sepia conversion using standard coefficients.
/// Works on the image pixel buffer for maximum control.
/// </summary>
private static void ApplySepiaInPlace(RasterImage raster)
{
// Load all pixels in one go
var rect = raster.Bounds;
var pixels = raster.LoadPixels(rect);
for (int i = 0; i < pixels.Length; i++)
{
var c = pixels[i];
// Standard sepia transform (clamped to 0..255)
double r = c.R;
double g = c.G;
double b = c.B;
int tr = ClampToByte(0.393 * r + 0.769 * g + 0.189 * b);
int tg = ClampToByte(0.349 * r + 0.686 * g + 0.168 * b);
int tb = ClampToByte(0.272 * r + 0.534 * g + 0.131 * b);
pixels[i] = Color.FromArgb(c.A, tr, tg, tb);
}
// Save pixels back
raster.SavePixels(rect, pixels);
}
private static int ClampToByte(double x)
{
if (x < 0) return 0;
if (x > 255) return 255;
return (int)Math.Round(x);
}
}
}
Przewodnik krok po kroku
Krok 1: Pobierz obraz
Pierwszym krokiem jest ładowanie obrazu, który chcesz zmodyfikować. Aspose.Imaging zapewnia prostą metodę:
Image image = Image.Load("path/to/your/image.jpg");
Krok 2: zastosowanie efektu Sepia Tone
Tony Sepia dają obrazy starożytny wygląd, przypominając zdjęcia z początku XX wieku. oto jak można zastosować go za pomocą Aspose.Imaging:
// Apply Sepia Tone Effect
using (Image image = Image.Load("path/to/your/image.jpg"))
{
image.Filter(new SepiaFilter());
}
Krok 3: Dodaj Embossing do tekstury
Embossing dodaje do obrazu trójwymiarową teksturę, co sprawia, że wygląda tak, jakby została wycięta lub podniesiona z powierzchni.
// Apply sepia tone effect to the image
using (SepiaFilter sepia = new SepiaFilter())
{
sepia.Apply(image);
}
Krok 4: Blur obraz dla miękkości
Blurowanie obrazu może złagodzić jego krawędzi i zmniejszyć hałas, dając mu senny wygląd.
// Apply embossing effect to create a textured appearance
using (Aspose.Imaging.Image image = Aspose.Imaging.Image.Load("path/to/image.jpg"))
{
Aspose.Imaging.Filters.FilterInfo embossFilter = new Aspose.Imaging.ImageFilters.FilterInfo(Aspose.Imaging.ImageFilters.FilterType.Emboss);
image.Filter(embossFilter);
}
Krok 5: Zapisz zmieniony obraz
Po zastosowaniu wszystkich pożądanych efektów, zapisuj zmieniony obraz na dysku lub dowolnym miejscu przechowywania wybranego przez Ciebie:
image.Save("path/to/save/modified_image.jpg", new JpegOptions());
Najlepsze praktyki
Podczas pracy z efektami obrazu w Aspose.Imaging dla .NET, ważne jest, aby wziąć pod uwagę implikacje wydajności aplikacji wielu efektów.Każdy efekt może być zasobowo intensywny, więc dobrze jest dokładnie przetestować aplikację i zoptymalizować, gdzie to konieczne.
Dodatkowo eksperymenty z różnymi kombinacjami efektów mogą prowadzić do unikalnych i kreatywnych wyników. nie wahaj się zbadać poza przykłady przedstawione tutaj i odkryć nowe sposoby poprawy swoich zdjęć.
Poprzez ten przewodnik, powinieneś teraz mieć solidną podstawę do tworzenia efektów wintage i artystycznych na obrazach za pomocą Aspose.Imaging dla .NET.