Il rendering di contenuti Adobe Illustrator (AI) su un server è più difficile di quanto sembri, e Type 1 function-based shading è una delle funzionalità che mette in difficoltà molti renderizzatori. Se il tuo flusso di lavoro genera miniature, anteprime web o prove di stampa da file AI, hai bisogno che quell’ombreggiatura venga disegnata correttamente, non sostituita da un riempimento piatto. Aspose.PSD for .NET ti consente di convertire i file AI che contengono Type 1 shading in PNG in C# con poche righe di codice e senza installare Adobe Illustrator. Questo tutorial ti guida attraverso l’installazione dell’SDK, il caricamento del file AI, la configurazione di PngOptions, l’esportazione di documenti multi‑pagina e la gestione degli errori in produzione.

Perché convertire l’ombreggiatura AI Tipo 1 in PNG

I file Modern AI memorizzano le loro opere in una struttura compatibile con PDF e PDF definisce diversi tipi di sfumatura per transizioni di colore fluide. Le sfumature di Tipo 2 (assiale) e Tipo 3 (radiale) descrivono gradienti lineari e circolari. La sfumatura di Tipo 1 è basata su funzione: il colore in ogni punto è calcolato da una funzione matematica delle sue coordinate x e y. Ciò la rende molto flessibile, ma significa anche che il renderer deve valutare la funzione su tutta l’area sfumata.

Quando un renderer non implementa l’ombreggiatura basata su funzioni, la zona ombreggiata viene tipicamente saltata o dipinta con un colore unico, e l’immagine esportata non corrisponde più al design originale. Aspose.PSD for .NET valuta internamente l’ombreggiatura di Tipo 1 durante il rendering, quindi il PNG che salvi riflette l’opera d’arte così come è stata progettata.

Con questa funzionalità, gli sviluppatori .NET possono:

  • Genera miniature e anteprime accurate per i sistemi di gestione delle risorse digitali (DAM).
  • Pubblica versioni PNG delle opere Illustrator su siti web e nelle app che non possono visualizzare file AI.
  • Crea pipeline di conversione batch automatizzate lato server che funzionano su Windows, Linux o in container.

Utilizzo di Aspose.PSD per la conversione dell’ombreggiatura AI Tipo 1

Aspose.PSD for .NET è una libreria C# per creare, modificare e convertire file Photoshop (PSD, PSB) e per caricare ed esportare file Adobe Illustrator (AI). Funziona senza Adobe Photoshop o Illustrator ed è distribuita come pacchetto NuGet.

Le classi utilizzate in questo tutorial sono:

  • Image (namespace Aspose.PSD): il punto di ingresso per caricare qualsiasi file supportato tramite Image.Load.
  • AiImage (namespace Aspose.PSD.FileFormats.Ai): rappresenta un documento Illustrator caricato ed espone membri come PageCount e ActivePageIndex.
  • PngOptions (namespace Aspose.PSD.ImageOptions): controlla le impostazioni di esportazione PNG come ColorType e CompressionLevel.
  • PngColorType (namespace Aspose.PSD.FileFormats.Png): seleziona il formato pixel PNG.

Installazione

Installa il pacchetto dalla Console di Gestione Pacchetti:

Install-Package Aspose.PSD

Oppure con la CLI .NET:

dotnet add package Aspose.PSD

Puoi saperne di più sulla pagina del prodotto Aspose.PSD for .NET, nella documentazione per sviluppatori, e nella riferimento API.

1. Configura il tuo progetto .NET

Crea un’applicazione console per ospitare il codice di conversione. Gli esempi seguenti utilizzano le istruzioni di livello superiore e il pattern matching di C# 9, quindi punta a .NET 6 o versioni successive.

  1. Crea un nuovo progetto dalla riga di comando o in Visual Studio:
dotnet new console -n AiShadingConversion
cd AiShadingConversion
  1. Aggiungi il pacchetto Aspose.PSD for .NET usando uno dei comandi di installazione mostrati sopra.
  2. Apri Program.cs e aggiungi le direttive using richieste nella parte superiore:
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 fornisce la classe Image, e Aspose.PSD.FileFormats.Ai contiene AiImage. PngOptions si trova in Aspose.PSD.ImageOptions, mentre Aspose.PSD.FileFormats.Png fornisce l’enumerazione PngColorType. Aspose.PSD.CoreExceptions contiene ImageLoadException, che utilizzerai per la gestione degli errori.

2. Carica un file AI contenente l’ombreggiatura di tipo 1

Image.Load rileva automaticamente il formato del file. Quando la sorgente è un documento Illustrator, l’oggetto restituito è un AiImage. Verificare il tipo con il pattern matching è più sicuro di un cast diretto, perché un cast diretto genera InvalidCastException se qualcuno passa un PSD o un altro formato supportato.

Cosa fa il codice:

  • Costruisce il percorso completo al file AI di origine.
  • Carica il file con Image.Load.
  • Conferma che il risultato è un AiImage e stampa le sue dimensioni e il conteggio delle pagine.
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}");
}

Il blocco using elimina l’immagine e rilascia le sue risorse non appena hai finito di usarla. Non è necessario alcun setup specifico per l’ombreggiatura: l’ombreggiatura di tipo 1 fa parte del contenuto del documento ed è gestita dal renderer quando salvi.

3. Salva l’immagine come PNG

L’esportazione in PNG richiede una singola chiamata a Save, che accetta il percorso di output e un’istanza di PngOptions. Impostare ColorType su PngColorType.TruecolorWithAlpha scrive un’immagine RGBA a 32 bit in modo che qualsiasi trasparenza prodotta dal renderer venga mantenuta, e CompressionLevel (da 0 a 9) bilancia la velocità di codifica con le dimensioni del file.

Cosa fa il codice:

  • Crea la cartella di output se non esiste.
  • Carica il file AI come AiImage.
  • Configura PngOptions e salva l’opera renderizzata, includendo l’ombreggiatura Type 1, come PNG.
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}");
}

Apri shadingType1.png in qualsiasi visualizzatore di immagini e confrontalo con l’opera originale per confermare che le aree ombreggiate vengano visualizzate come previsto.

Esempio completo: Converti l’ombreggiatura AI Tipo 1 in PNG in C#

Il seguente Program.cs combina tutto in un’app console pronta per la produzione. Convalida l’input, esporta ogni pagina di un file AI multi‑pagina e gestisce gli errori di caricamento.

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. Suggerimenti, insidie comuni e considerazioni sulle prestazioni

Esporta file AI multi-pagina pagina per pagina

I documenti Illustrator possono contenere più pagine (artboard). AiImage.PageCount restituisce il numero di pagine e ActivePageIndex seleziona la pagina che Save rende. Imposta l’indice, salva e ripeti, come mostrato nell’esempio completo. Nota che AiImage.Layers restituisce oggetti AiLayerSection che descrivono la struttura del documento; non sono immagini separate, quindi usa le pagine anziché i layer quando ti serve un PNG per artboard.

Usa il pattern matching invece di cast ciechi

Un cast come (AiImage)Image.Load(path) va bene quando controlli l’input. Nei gestori di upload o nei processi batch, preferisci image is AiImage aiImage in modo che i formati imprevisti vengano segnalati chiaramente invece di lanciare InvalidCastException.

Gestire la memoria nelle conversioni batch

Il rendering di opere d’arte grandi o complesse, specialmente con ombreggiatura basata su funzioni, è intensivo per CPU e memoria. Avvolgi sempre ogni immagine caricata in un blocco using, elabora i file uno alla volta (o con un piccolo grado di parallelismo limitato) e riutilizza un’unica istanza PngOptions per tutti i file.

Preservare la trasparenza

Usa PngColorType.TruecolorWithAlpha quando il PNG verrà posizionato sopra altri contenuti, ad esempio su una pagina web o in uno strumento di progettazione. Se non hai bisogno di un canale alfa, un output truecolor senza alfa produce file più piccoli.

Gestire gli errori in modo esplicito

Verifica che il file di input esista prima di caricarlo e intercetta ImageLoadException (namespace Aspose.PSD.CoreExceptions) per i file corrotti o che non possono essere analizzati. Registra il nome del file insieme al messaggio dell’eccezione in modo che gli elementi non riusciti in un batch siano facili da riprovare.

Mantieni Aspose.PSD aggiornato

Il rendering AI migliora costantemente da una versione all’altra, includendo correzioni per l’ombreggiatura, le maschere morbide e le immagini in linea. Se un file viene renderizzato in modo diverso da quanto previsto, aggiorna alla versione più recente del pacchetto prima di procedere con la risoluzione dei problemi.

Ottieni una licenza gratuita

Senza una licenza, Aspose.PSD for .NET funziona in modalità di valutazione e aggiunge una filigrana alle immagini esportate. Richiedi una licenza temporanea gratuita per testare l’intera API per 30 giorni, quindi applicala prima della prima chiamata a Image.Load.

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

Risorse aggiuntive gratuite

Conclusione

La conversione di file AI con shading basato su funzioni Type 1 in PNG in C# è semplice con Aspose.PSD for .NET. Installa il pacchetto NuGet, carica il file con Image.Load, configura PngOptions e chiama Save: la libreria valuta lo shading durante il rendering, quindi il tuo PNG corrisponde all’opera originale senza Adobe Illustrator o strumenti esterni. Con l’esportazione pagina per pagina, controlli di tipo sicuri e gestione esplicita degli errori, lo stesso codice scala da un’anteprima singola a pipeline di conversione ad alto volume lato server.

Domande frequenti

1. È necessaria una licenza per convertire l’ombreggiatura AI Type 1 in PNG?
Non è necessaria alcuna licenza per provarlo, ma senza di essa Aspose.PSD funziona in modalità di valutazione, che aggiunge una filigrana all’output. È possibile richiedere una licenza temporanea gratuita di 30 giorni per valutare senza restrizioni. È necessaria una licenza acquistata per l’uso in produzione.

2. Come converto un file AI multipagina in PNG in C#?
Leggi la proprietà AiImage.PageCount, quindi imposta ActivePageIndex su ciascun indice di pagina e chiama Save con un percorso di output separato. I file AI legacy riportano un PageCount pari a 0, quindi trattali come una singola pagina.

3. Cosa succede se il file AI non contiene l’ombreggiatura di tipo 1? Nulla cambia nel tuo codice. Aspose.PSD rende tutto ciò che il file contiene, inclusi altri tipi di gradiente, percorsi e immagini in linea, e salva il risultato in PNG.

4. Ci sono perdite di qualità durante l’esportazione di AI in PNG?
PNG è un formato senza perdita, quindi i pixel prodotti dal renderer vengono memorizzati senza artefatti di compressione. La dimensione dell’output segue il Width e l’Height riportati dall’AiImage caricato.

5. Quali versioni .NET supporta Aspose.PSD per .NET?
Aspose.PSD per .NET supporta sia .NET Framework sia .NET moderno, e le build dedicate a .NET 8 e .NET 9 sono disponibili sin dalla versione 25.4. Controlla la scheda Frameworks del pacchetto Aspose.PSD su NuGet per i target esatti della versione che installi.

6. Come posso controllare il livello di compressione PNG? Imposta PngOptions.CompressionLevel a un valore da 0 (memorizzazione, più veloce) a 9 (compressione massima, file più piccolo) prima di chiamare Save. La compressione è senza perdita a tutti i livelli, quindi influisce solo sulla dimensione del file e sul tempo di codifica.

Leggi di più