デジタルアートと写真の世界では、ヴィンテージと芸術的な効果を作成することは、古いまたは平らなイメージに新しい生活を呼吸することができます. Aspose.Imaging for .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 Effect を適用する

Sepia トーンは、20 世紀初頭の写真を思い出させる古いモダンな外観を与えます。

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

ステップ3:テキストにエンボシングを追加する

Embossingはあなたのイメージに3次元の構造を追加し、表面からカットされたか上げられたかのように見えるようにします。

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

ステップ4:柔らかさのためのイメージを吹き込む

イメージを振り回すことは、その端を緩和し、騒音を減らし、夢見る外観を与えることができます。

// 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 for .NET の画像効果を使用する際には、複数の効果を適用するパフォーマンスの影響を考慮することが重要です。それぞれの効果はリソースインテンツである可能性がありますので、アプリケーションを徹底的にテストし、必要に応じて最適化するのが良いアイデアになります。

さらに、効果のさまざまな組み合わせで実験することは、ユニークでクリエイティブな結果をもたらす可能性があります. ここで提供されている例を超えて探索し、あなたのイメージを改善する新しい方法を見つけることを躊躇しないでください。

このガイドに従って、あなたは今、Aspose.Imaging for .NET を使用して画像にヴィンテージと芸術的な効果を作成するための堅固な基礎を持つべきです。

More in this category