Sunucuda Adobe Illustrator (AI) eserlerini işlemek göründüğünden daha zordur ve Type 1 fonksiyon tabanlı gölgelendirme, birçok renderlayıcıyı zorlayan özelliklerden biridir. İş akışınız AI dosyalarından küçük resimler, web ön izlemeleri veya baskı prova örnekleri üretiyorsa, bu gölgelendirmenin doğru çizilmesi gerekir, düz bir dolgu ile değiştirilmemelidir. Aspose.PSD for .NET, Type 1 gölgelendirme içeren AI dosyalarını birkaç satır kodla ve Adobe Illustrator kurulumuna gerek kalmadan C# içinde PNG’ye dönüştürmenizi sağlar. Bu öğretici, SDK’yı kurma, AI dosyasını yükleme, PngOptions yapılandırma, çok sayfalı belgeleri dışa aktarma ve üretimde hataları ele alma konularında size rehberlik eder.

Neden AI Tip 1 Gölgelendirmesini PNG’ye Dönüştürmeliyiz

Modern AI dosyaları, sanat eserlerini PDF uyumlu bir yapıda saklar ve PDF, pürüzsüz renk geçişleri için çeşitli gölgelendirme türlerini tanımlar. Tip 2 (aksiyel) ve Tip 3 (radial) gölgelendirmeler, lineer ve dairesel degrade’leri açıklar. Tip 1 gölgelendirme fonksiyon tabanlıdır: her bir noktadaki renk, x ve y koordinatlarının matematiksel bir fonksiyonu ile hesaplanır. Bu, onu çok esnek kılar, ancak aynı zamanda renderlayıcının fonksiyonu gölgelendirilmiş alanın tamamında değerlendirmesi gerektiği anlamına gelir.

Bir renderlayıcı fonksiyon tabanlı gölgelendirmeyi uygulamadığında, gölgeli bölge genellikle atlanır veya tek bir renk ile boyanır ve dışa aktarılan görüntü artık orijinal tasarımla eşleşmez. Aspose.PSD for .NET, renderleme sırasında Type 1 gölgelendirmeyi dahili olarak değerlendirir, bu nedenle kaydettiğiniz PNG, tasarlandığı gibi sanat eserini yansıtır.

Bu yetenekle, .NET geliştiricileri şunları yapabilir:

  • Dijital varlık yönetimi (DAM) sistemleri için doğru küçük resimler ve ön izlemeler oluşturun.
  • AI dosyalarını görüntüleyemeyen web sitelerinde ve uygulamalarda Illustrator sanat eserlerinin PNG sürümlerini yayınlayın.
  • Windows, Linux veya konteynerlerde çalışan otomatik, sunucu tarafı toplu dönüşüm boru hatları oluşturun.

Aspose.PSD Kullanarak AI Tip 1 Gölgelendirme Dönüştürme

Aspose.PSD for .NET bir C# kütüphanesidir ve Photoshop (PSD, PSB) dosyalarını oluşturma, düzenleme ve dönüştürme ile Adobe Illustrator (AI) dosyalarını yükleme ve dışa aktarma işlemlerini gerçekleştirir. Adobe Photoshop veya Illustrator olmadan çalışır ve bir NuGet paketi olarak dağıtılır.

Bu öğreticide kullanılan sınıflar şunlardır:

  • Image (namespace Aspose.PSD): Image.Load aracılığıyla desteklenen herhangi bir dosyayı yüklemek için giriş noktası.
  • AiImage (namespace Aspose.PSD.FileFormats.Ai): Yüklenmiş bir Illustrator belgesini temsil eder ve PageCount ve ActivePageIndex gibi üyeleri ortaya çıkarır.
  • PngOptions (namespace Aspose.PSD.ImageOptions): ColorType ve CompressionLevel gibi PNG dışa aktarma ayarlarını kontrol eder.
  • PngColorType (namespace Aspose.PSD.FileFormats.Png): PNG piksel formatını seçer.

Kurulum

Paketi Paket Yöneticisi Konsolundan yükleyin:

Install-Package Aspose.PSD

Veya .NET CLI ile:

dotnet add package Aspose.PSD

Daha fazla bilgiye Aspose.PSD for .NET ürün sayfasında, geliştirici belgelerinde, ve API referansında ulaşabilirsiniz.

1. .NET Projenizi Kurun

Dönüştürme kodunu barındırmak için bir konsol uygulaması oluşturun. Aşağıdaki örnekler üst‑seviye ifadeler ve C# 9 desen eşleştirmesini kullanır, bu nedenle .NET 6 or later hedefleyin.

  1. Komut satırından veya Visual Studio’da yeni bir proje oluşturun:
dotnet new console -n AiShadingConversion
cd AiShadingConversion
  1. Yukarıda gösterilen kurulum komutlarından birini kullanarak Aspose.PSD for .NET paketini ekleyin.
  2. Program.cs dosyasını açın ve üstte gerekli using yönergelerini ekleyin:
using System;
using System.IO;
using Aspose.PSD;
using Aspose.PSD.CoreExceptions;
using Aspose.PSD.FileFormats.Ai;
using Aspose.PSD.FileFormats.Png;
using Aspose.PSD.ImageOptions;

Aspose.PSD Image sınıfını sağlar ve Aspose.PSD.FileFormats.Ai AiImage içerir. PngOptions Aspose.PSD.ImageOptions içinde bulunur, Aspose.PSD.FileFormats.Png ise PngColorType enumını sağlar. Aspose.PSD.CoreExceptions ImageLoadException içerir; bunu hata işleme için kullanacaksınız.

2. Tip 1 Gölgelendirme İçeren bir AI Dosyasını Yükleme

Image.Load dosya formatını otomatik olarak algılar. Kaynak bir Illustrator belgesi olduğunda, döndürülen nesne bir AiImage olur. Tipi desen eşlemesiyle kontrol etmek, doğrudan dönüşümden daha güvenlidir, çünkü doğrudan dönüşüm bir PSD veya başka bir desteklenen format geçildiğinde InvalidCastException hatası fırlatır.

Kodun ne yaptığını:

  • Kaynak AI dosyasının tam yolunu oluşturur.
  • Dosyayı Image.Load ile yükler.
  • Sonucun bir AiImage olduğunu doğrular ve boyutunu ve sayfa sayısını yazdırır.
string baseFolder = @"C:\Images";
string sourceFile = Path.Combine(baseFolder, "shadingType1.ai");

using (Image image = Image.Load(sourceFile))
{
    if (image is not AiImage aiImage)
    {
        Console.WriteLine("The source file is not an Adobe Illustrator document.");
        return;
    }

Console.WriteLine($"Loaded AI file: {aiImage.Width} x {aiImage.Height} px, pages: {aiImage.PageCount}");
}

The using bloğu, görüntüyü yok eder ve kaynaklarını, işiniz bittiğinde hemen serbest bırakır. Gölgelendirme‑özel bir kurulum gerekmez: Tip 1 gölgelendirme, belge içeriğinin bir parçasıdır ve kaydettiğinizde renderlayıcı tarafından işlenir.

3. Görüntüyü PNG olarak kaydedin

PNG’ye dışa aktarma, çıktı yolunu ve bir PngOptions örneğini kabul eden tek bir Save çağrısı gerektirir. ColorType‘ı PngColorType.TruecolorWithAlpha olarak ayarlamak, render tarafından üretilen şeffaflığın korunmasını sağlayan 32‑bit RGBA görüntüsü yazar ve CompressionLevel (0’dan 9’a) kodlama hızını dosya boyutu için takas eder.

Kodun yaptığı şey:

  • Çıktı klasörünü yoksa oluşturur.
  • AI dosyasını AiImage olarak yükler.
  • PngOptions yapılandırır ve Type 1 gölgelendirme dahil olmak üzere oluşturulan sanat eserini PNG olarak kaydeder.
string baseFolder = @"C:\Images";
string outputFolder = @"C:\Converted";
string sourceFile = Path.Combine(baseFolder, "shadingType1.ai");
string outputFile = Path.Combine(outputFolder, "shadingType1.png");

Directory.CreateDirectory(outputFolder);

using (var aiImage = (AiImage)Image.Load(sourceFile))
{
    var pngOptions = new PngOptions
    {
        ColorType = PngColorType.TruecolorWithAlpha,
        CompressionLevel = 6 // 0 = store (fastest), 9 = maximum compression
    };

aiImage.Save(outputFile, pngOptions);
    Console.WriteLine($"PNG saved to {outputFile}");
}

Herhangi bir görüntü görüntüleyicide shadingType1.png dosyasını açın ve gölgeli alanların beklendiği gibi render edildiğini doğrulamak için orijinal sanat eserine kıyaslayın.

Tam Örnek: AI Tip 1 Gölgelendirmesini C#’ta PNG’ye Dönüştürme

Aşağıdaki Program.cs, her şeyi tek bir üretim hazır konsol uygulamasında birleştirir. Girişi doğrular, çok sayfalı bir AI dosyasının her sayfasını dışa aktarır ve yükleme hatalarını ele alır.

using System;
using System.IO;
using Aspose.PSD;
using Aspose.PSD.CoreExceptions;
using Aspose.PSD.FileFormats.Ai;
using Aspose.PSD.FileFormats.Png;
using Aspose.PSD.ImageOptions;

// Optional: apply a license to remove the evaluation watermark.
// var license = new License();
// license.SetLicense("Aspose.PSD.NET.lic");

string sourceFile = @"C:\Images\shadingType1.ai";
string outputFolder = @"C:\Converted";

if (!File.Exists(sourceFile))
{
    Console.WriteLine($"Source file not found: {sourceFile}");
    return;
}

Directory.CreateDirectory(outputFolder);

var pngOptions = new PngOptions
{
    ColorType = PngColorType.TruecolorWithAlpha,
    CompressionLevel = 6
};

try
{
    using (Image image = Image.Load(sourceFile))
    {
        if (image is not AiImage aiImage)
        {
            Console.WriteLine("The source file is not an Adobe Illustrator document.");
            return;
        }

string baseName = Path.GetFileNameWithoutExtension(sourceFile);

// Legacy AI files report PageCount = 0, so treat them as a single page.
        if (aiImage.PageCount <= 1)
        {
            string outputFile = Path.Combine(outputFolder, $"{baseName}.png");
            aiImage.Save(outputFile, pngOptions);
            Console.WriteLine($"Saved {outputFile}");
        }
        else
        {
            for (int i = 0; i < aiImage.PageCount; i++)
            {
                aiImage.ActivePageIndex = i;
                string outputFile = Path.Combine(outputFolder, $"{baseName}_page{i + 1}.png");
                aiImage.Save(outputFile, pngOptions);
                Console.WriteLine($"Saved {outputFile}");
            }
        }
    }
}
catch (ImageLoadException ex)
{
    Console.WriteLine($"Could not load the AI file: {ex.Message}");
}
catch (Exception ex)
{
    Console.WriteLine($"Conversion failed: {ex.Message}");
}

4. İpuçları, Yaygın Tuzaklar ve Performans Düşünceleri

Çok Sayfalı AI Dosyalarını Sayfa Sayfa Dışa Aktarın

Illustrator belgeleri birden fazla sayfa (artboard) içerebilir. AiImage.PageCount sayfa sayısını döndürür ve ActivePageIndex Save işleminin render ettiği sayfayı seçer. Dizini ayarlayın, kaydedin ve tam örnekte gösterildiği gibi tekrarlayın. AiImage.Layers belgenin yapısını tanımlayan AiLayerSection nesnelerini döndürdüğünü unutmayın; bunlar ayrı görüntüler değildir, bu nedenle her artboard için bir PNG’ye ihtiyacınız olduğunda katmanlar yerine sayfaları kullanın.

Kör Dönüşümler Yerine Desen Eşleştirmesini Kullanın

Girdi üzerinde kontrolünüz olduğunda (AiImage)Image.Load(path) gibi bir dönüşüm uygundur. Yükleme işleyicilerinde veya toplu işlerde, beklenmeyen formatların açıkça raporlanması ve InvalidCastException atılmasının önlenmesi için image is AiImage aiImage kullanmayı tercih edin.

Toplu Dönüşümlerde Belleği Yönet

Büyük veya karmaşık sanat eserlerini, özellikle fonksiyon tabanlı gölgelendirme ile render etmek CPU ve bellek açısından yoğundur. Her yüklenen görüntüyü her zaman bir using bloğu içinde sarın, dosyaları tek tek işleyin (veya sınırlı bir paralellik derecesiyle), ve dosyalar arasında tek bir PngOptions örneğini yeniden kullanın.

Şeffaflığı Koru

PNG, bir web sayfası veya tasarım aracında diğer içeriklerin üzerine yerleştirilecekse PngColorType.TruecolorWithAlpha kullanın. Alfa kanalı gerekmiyorsa, alfasız bir truecolor çıktısı daha küçük dosyalar üretir.

Hataları Açıkça İşleyin

Girdi dosyasının yüklendiğinden önce var olduğunu kontrol edin ve bozuk ya da ayrıştırılamayan dosyalar için ImageLoadException (namespace Aspose.PSD.CoreExceptions) yakalayın. Dosya adını istisna mesajı ile birlikte kaydedin, böylece bir toplu işte başarısız öğeler kolayca yeniden denenebilir.

Aspose.PSD’yi Güncel Tutun

AI renderleme, sürümden sürüme istikrarlı bir şekilde gelişiyor; gölgelendirme, yumuşak maskeler ve satır içi görüntüler için düzeltmeler içeriyor. Bir dosya beklenenden farklı renderleniyorsa, sorunu gidermeye başlamadan önce en son paket sürümüne güncelleyin.

Ücretsiz Lisans Al

Bir lisans olmadan, Aspose.PSD for .NET değerlendirme modunda çalışır ve dışa aktarılan görüntülere bir filigran ekler. Tam API’yi 30 gün boyunca test etmek için bir ücretsiz geçici lisans isteyin, ardından Image.Load çağrısından önce uygulayın.

var license = new License();
license.SetLicense("Aspose.PSD.NET.lic");

Ücretsiz Ek Kaynaklar

Sonuç

AI dosyalarını Type 1 işlev tabanlı gölgelendirme ile PNG’ye dönüştürmek C#’ta Aspose.PSD for .NET ile oldukça basittir. NuGet paketini yükleyin, dosyayı Image.Load ile yükleyin, PngOptions yapılandırın ve Save metodunu çağırın: kütüphane gölgelendirmeyi render sırasında değerlendirir, böylece PNG’niz Adobe Illustrator veya harici araçlar olmadan orijinal çalışmaya eşdeğer olur. Sayfa sayfa dışa aktarım, güvenli tip kontrolleri ve açık hata yönetimi sayesinde aynı kod tek bir ön izlemeden yüksek hacimli, sunucu tarafı dönüşüm hatlarına kadar ölçeklenebilir.

SSS

1. AI Type 1 gölgelendirmesini PNG’ye dönüştürmek için lisansa ihtiyacım var mı? Denemek için lisansa gerek yok, ancak lisans olmadan Aspose.PSD değerlendirme modunda çalışır ve çıktıya bir filigran ekler. Kısıtlamasız değerlendirme için ücretsiz 30 günlük geçici bir lisans talep edebilirsiniz. Üretim kullanımı için satın alınmış bir lisans gereklidir.

2. Çok sayfalı bir AI dosyasını C#’ta PNG’ye nasıl dönüştürürüm? AiImage.PageCount özelliğini okuyun, ardından ActivePageIndex‘i her sayfa indeksine ayarlayın ve ayrı bir çıktı yolu ile Save metodunu çağırın. Eski AI dosyaları PageCount değerini 0 olarak rapor eder, bu yüzden bunları tek sayfa olarak ele alın.

3. AI dosyası Tip 1 gölgelendirme içermiyorsa ne olur? Kodunuzda hiçbir değişiklik olmaz. Aspose.PSD, dosyanın içerdiği her şeyi, diğer degrade tiplerini, yolları ve satır içi görüntüleri de render eder ve sonucu PNG olarak kaydeder.

4. AI’yi PNG’ye dışa aktarırken kalite kaybı var mı? PNG kayıpsız bir formattır, bu nedenle render tarafından üretilen pikseller sıkıştırma artefaktları olmadan depolanır. Çıktı boyutu, yüklenen AiImage tarafından bildirilen Width ve Height değerlerini izler.

5. Aspose.PSD for .NET hangi .NET sürümlerini destekliyor? Aspose.PSD for .NET, hem .NET Framework hem de modern .NET’i destekler ve .NET 8 ve .NET 9 için özel derlemeler 25.4 sürümünden itibaren sunulmuştur. Yüklediğiniz sürümün tam hedeflerini görmek için NuGet üzerindeki Aspose.PSD paketinin Frameworks sekmesini kontrol edin.

6. PNG sıkıştırma seviyesini nasıl kontrol edebilirim?
Save çağırmadan önce PngOptions.CompressionLevel değerini 0 (sakla, en hızlı) ile 9 (maksimum sıkıştırma, en küçük dosya) arasında bir değere ayarlayın. Sıkıştırma her seviyede kayıpsızdır, bu yüzden yalnızca dosya boyutunu ve kodlama süresini etkiler.

Devamını Oku