В света на цифровото изкуство и фотографията, създаването на винтажни и художествени ефекти може да диша нов живот в стари или плоски изображения. Aspose.Imaging за .NET предлага мощен набор от инструменти, за да се постигне това, което позволява на разработчиците да приложат различни техники за обработка на изображение като сепия тонове, уплътняване, блуринг и много други.
Пълният пример
За да започнете, нека се потопите в пълен пример, който показва как да приложите няколко ефекта на изображението в един ход. Тази секция ще ви преминава през целия процес от зареждане на снимка, за да го спаси с желаните ефекти.
// 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);
}
}
}
Стъпка по стъпка ръководство
Стъпка 1: Изтеглете изображението
Първата стъпка е да изтеглите изображението, което искате да промените. Aspose.Imaging осигурява прост метод за това:
Image image = Image.Load("path/to/your/image.jpg");
Стъпка 2: Използвайте ефекта Sepia Tone
Sepia тонус дава на изображенията стар моден външен вид, напомнящ снимки от началото на 20 век. Ето как можете да го приложите с помощта на Aspose.Imaging:
// Apply Sepia Tone Effect
using (Image image = Image.Load("path/to/your/image.jpg"))
{
image.Filter(new SepiaFilter());
}
Стъпка 3: Добавете Embossing за текстура
Поглъщането добавя триизмерна текстура към изображението ви, което го прави да изглежда като че ли е ограбена или издигната от повърхността.
// Apply sepia tone effect to the image
using (SepiaFilter sepia = new SepiaFilter())
{
sepia.Apply(image);
}
Стъпка 4: Blur изображението за мекота
Изтръпването на изображение може да облекчи ръбовете му и да намали шума, като му даде сънуващ външен вид. Ето как да приложим гаузиански блур с помощта на Aspose.Imaging:
// 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);
}
Стъпка 5: Запазете промененото изображение
След като сте приложили всички желани ефекти, запазете модифицираната картина на вашия диск или всяко местоположение за съхранение по ваш избор:
image.Save("path/to/save/modified_image.jpg", new JpegOptions());
Най-добрите практики
Когато работите с ефекти на изображението в Aspose.Imaging за .NET, е важно да се вземат предвид последиците от изпълнението на прилагането на няколко ефекта. Всеки ефект може да бъде ресурсно интензивен, така че е добра идея да тествате вашето приложение задълбочено и да оптимизирате, когато е необходимо.
Освен това, експериментирането с различни комбинации от ефекти може да доведе до уникални и творчески резултати.Не се колебайте да изследвате извън примера, предоставен тук и да откриете нови начини за подобряване на вашите изображения.
Следвайки този ръководство, трябва сега да имате солидна основа за създаване на винтажни и художествени ефекти върху изображения с помощта на Aspose.Imaging за .NET.
More in this category
- Оптимизиране на анимирани GIFs в .NET с помощта на Aspose.Imaging
- Оптимизиране на Multi-Page TIFFs за архивиране в .NET с Aspose
- HEIC към JPEG/PNG Конверсия с Aspose.Imaging за .NET
- Анимации, насочени към данни в .NET с Aspose.Imaging
- Без загуба и качествено дефинирана компресия на изображението в .NET с Aspose.Imaging