В света на цифровите изкуства и фотографските снимки, може да се създаде ефекти на фантазията и изкуството на новия живот в старите или плоските изображения. Aspose.Фантазията предлага на .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);
        }
    }
}

Крок за крачка доказателство

Първи стъпка: Изтегляне на снимки

Първият е да изтеглите изображението, което искате да редактирате. Aspose.Представяте фантазията на простия начин за това:

Image image = Image.Load("path/to/your/image.jpg");

Стъпка 2: Използвайте Sepia Tone Effect

Тонусът на Сепията дава на изображенията стария външен вид, споменавайки изображенията от началото на 20-ти век:.:

// Apply Sepia Tone Effect
using (Image image = Image.Load("path/to/your/image.jpg"))
{
    image.Filter(new SepiaFilter());
}

Стъпка 3: Добавяне на текст

Добавя триизмерен тканина към лицето ви, което ги прави да изглеждат като да са изтръпнати или издигнати от повърхността:.:

// Apply sepia tone effect to the image
using (SepiaFilter sepia = new SepiaFilter())
{
    sepia.Apply(image);
}

Стъпка 4: Смажете снимката за доброта

Може да успокои краищата на изображението и да намали шума, което му дава сънуващ външен вид.Ето как да приложим газовата шума с помощта на Aspose.Снимки:

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

Пето стъпка: Запазване на модифицираната картина

След прилагането на всички необходими ефекти, запазете променената картина на диска или на всяко място за съхранение от ваш избор:

image.Save("path/to/save/modified_image.jpg", new JpegOptions());

Най-добрите практики

Когато работите с ефектите на изображението в .NET, е важно да се вземат предвид ефектите на изпълнението, за да се прилагат много ефекти.Всяко ефект може да бъде интензивен ресурс, така че е добре да тествате внимателно и да подобрите приложението си, където е необходимо.

Освен това, опитът с различни набори от ефекти може да доведе до уникални и творчески резултати.Не се колебайте да изследвате извън примера, представен тук и да откриете нови начини за подобряване на вашите снимки.

Чрез следване на този ръководство, трябва да имате силна основа за създаване на фантастични и технически ефекти върху изображенията с помощта на Aspose.Imaging за .NET.!

More in this category