Merender karya Adobe Illustrator (AI) di server lebih sulit daripada yang terlihat, dan Type 1 function-based shading adalah salah satu fitur yang membuat banyak perender kebingungan. Jika pipeline Anda menghasilkan thumbnail, pratinjau web, atau bukti cetak dari file AI, Anda memerlukan shading tersebut digambar dengan benar, bukan digantikan oleh isian datar. Aspose.PSD for .NET memungkinkan Anda mengonversi file AI yang berisi Type 1 shading ke PNG dalam C# dengan beberapa baris kode dan tanpa instalasi Adobe Illustrator. Tutorial ini memandu Anda melalui pemasangan SDK, memuat file AI, mengonfigurasi PngOptions, mengekspor dokumen multi‑halaman, dan menangani kesalahan dalam produksi.

Mengapa Mengonversi AI Type 1 Shading ke PNG

File AI modern menyimpan karya mereka dalam struktur yang kompatibel dengan PDF, dan PDF mendefinisikan beberapa jenis shading untuk transisi warna yang halus. Shading Tipe 2 (aksial) dan Tipe 3 (radial) menggambarkan gradien linier dan melingkar. Shading Tipe 1 berbasis fungsi: warna pada setiap titik dihitung oleh fungsi matematis dari koordinat x dan y‑nya. Itu membuatnya sangat fleksibel, tetapi juga berarti renderer harus mengevaluasi fungsi tersebut di seluruh area yang di‑shading.

Ketika renderer tidak mengimplementasikan shading berbasis fungsi, wilayah yang diarsir biasanya dilewati atau diwarnai dengan satu warna, dan gambar yang diekspor tidak lagi cocok dengan desain asli. Aspose.PSD for .NET mengevaluasi shading Tipe 1 secara internal selama proses rendering, sehingga PNG yang Anda simpan mencerminkan karya seni sesuai desain.

Dengan kemampuan ini, pengembang .NET dapat:

  • Menghasilkan thumbnail dan pratinjau yang akurat untuk sistem manajemen aset digital (DAM).
  • Menerbitkan versi PNG dari karya seni Illustrator di situs web dan aplikasi yang tidak dapat menampilkan file AI.
  • Membuat pipeline konversi batch otomatis di sisi server yang berjalan di Windows, Linux, atau dalam kontainer.

Menggunakan Aspose.PSD untuk Mengonversi Shading Tipe 1 AI

Aspose.PSD for .NET adalah perpustakaan C# untuk membuat, mengedit, dan mengonversi file Photoshop (PSD, PSB) serta untuk memuat dan mengekspor file Adobe Illustrator (AI). Perpustakaan ini berjalan tanpa Adobe Photoshop atau Illustrator dan didistribusikan sebagai paket NuGet.

Kelas yang digunakan dalam tutorial ini adalah:

  • Image (namespace Aspose.PSD): titik masuk untuk memuat file yang didukung apa pun melalui Image.Load.
  • AiImage (namespace Aspose.PSD.FileFormats.Ai): mewakili dokumen Illustrator yang dimuat dan mengekspos anggota seperti PageCount dan ActivePageIndex.
  • PngOptions (namespace Aspose.PSD.ImageOptions): mengontrol pengaturan ekspor PNG seperti ColorType dan CompressionLevel.
  • PngColorType (namespace Aspose.PSD.FileFormats.Png): memilih format piksel PNG.

Instalasi

Instal paket dari Package Manager Console:

Install-Package Aspose.PSD

Atau dengan .NET CLI:

dotnet add package Aspose.PSD

Anda dapat mempelajari lebih lanjut di halaman produk Aspose.PSD for .NET, dalam dokumentasi pengembang, dan di referensi API.

1. Siapkan Proyek .NET Anda

Buat aplikasi konsol untuk menampung kode konversi. Contoh di bawah menggunakan pernyataan tingkat atas dan pencocokan pola C# 9, jadi target .NET 6 or later.

  1. Buat proyek baru dari baris perintah atau di Visual Studio:
dotnet new console -n AiShadingConversion
cd AiShadingConversion
  1. Tambahkan paket Aspose.PSD for .NET menggunakan salah satu perintah instalasi yang ditunjukkan di atas.
  2. Buka Program.cs dan tambahkan direktif using yang diperlukan di bagian atas:
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 menyediakan kelas Image, dan Aspose.PSD.FileFormats.Ai berisi AiImage. PngOptions berada di Aspose.PSD.ImageOptions, sementara Aspose.PSD.FileFormats.Png menyediakan enumerasi PngColorType. Aspose.PSD.CoreExceptions berisi ImageLoadException, yang akan Anda gunakan untuk penanganan kesalahan.

2. Muat File AI yang Mengandung Shading Tipe 1

Image.Load mendeteksi format file secara otomatis. Ketika sumbernya adalah dokumen Illustrator, objek yang dikembalikan adalah AiImage. Memeriksa tipe dengan pencocokan pola lebih aman daripada casting langsung, karena casting langsung akan melempar InvalidCastException jika seseorang memberikan PSD atau format lain yang didukung.

Apa yang dilakukan kode:

  • Membangun jalur lengkap ke file AI sumber.
  • Muat file dengan Image.Load.
  • Mengonfirmasi bahwa hasilnya adalah AiImage dan mencetak ukuran serta jumlah halaman.
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}");
}

Blok using membuang gambar dan melepaskan sumber dayanya segera setelah Anda selesai menggunakannya. Tidak diperlukan pengaturan khusus shading: Shading Tipe 1 merupakan bagian dari konten dokumen dan ditangani oleh renderer saat Anda menyimpan.

3. Simpan Gambar sebagai PNG

Mengekspor ke PNG memerlukan satu panggilan ke Save, yang menerima jalur output dan sebuah instance PngOptions. Mengatur ColorType ke PngColorType.TruecolorWithAlpha menulis gambar RGBA 32‑bit sehingga transparansi apa pun yang dihasilkan oleh renderer dipertahankan, dan CompressionLevel (0 hingga 9) menukar kecepatan enkoding dengan ukuran file.

Apa yang dilakukan kode:

  • Membuat folder output jika belum ada.
  • Memuat file AI sebagai AiImage.
  • Mengonfigurasi PngOptions dan menyimpan karya seni yang dirender, termasuk shading Tipe 1, sebagai 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}");
}

Buka shadingType1.png di penampil gambar apa pun dan bandingkan dengan karya seni asli untuk memastikan bahwa area yang diarsir ditampilkan sebagaimana mestinya.

Contoh Lengkap: Mengonversi AI Type 1 Shading ke PNG di C#

Berikut Program.cs menggabungkan semuanya menjadi satu aplikasi konsol siap produksi. Ini memvalidasi input, mengekspor setiap halaman dari file AI multi‑halaman, dan menangani kesalahan pemuatan.

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. Tips, Kesalahan Umum, dan Pertimbangan Kinerja

Ekspor File AI Multi-Halaman Per Halaman

Dokumen Illustrator dapat berisi beberapa halaman (artboard). AiImage.PageCount mengembalikan jumlah halaman, dan ActivePageIndex memilih halaman yang dirender oleh Save. Atur indeks, simpan, dan ulangi, seperti yang ditunjukkan dalam contoh lengkap. Perhatikan bahwa AiImage.Layers mengembalikan objek AiLayerSection yang menggambarkan struktur dokumen; mereka bukan gambar terpisah, jadi gunakan halaman alih-alih lapisan ketika Anda memerlukan satu PNG per artboard.

Gunakan Pencocokan Pola Daripada Casting Buta

Cast seperti (AiImage)Image.Load(path) baik ketika Anda mengontrol input. Pada penangan unggahan atau pekerjaan batch, lebih baik gunakan image is AiImage aiImage sehingga format yang tidak terduga dilaporkan dengan jelas alih‑alih melempar InvalidCastException.

Kelola Memori dalam Konversi Batch

Merender karya seni yang besar atau kompleks, terutama dengan shading berbasis fungsi, memerlukan banyak CPU dan memori. Selalu bungkus setiap gambar yang dimuat dalam blok using, proses file satu per satu (atau dengan tingkat paralelisme kecil yang terbatas), dan gunakan kembali satu instance PngOptions di seluruh file.

Pertahankan Transparansi

Gunakan PngColorType.TruecolorWithAlpha ketika PNG akan ditempatkan di atas konten lain, seperti pada halaman web atau dalam alat desain. Jika Anda tidak memerlukan saluran alfa, output truecolor tanpa alfa menghasilkan file yang lebih kecil.

Tangani Kesalahan Secara Eksplisit

Periksa bahwa file input ada sebelum memuatnya, dan tangkap ImageLoadException (namespace Aspose.PSD.CoreExceptions) untuk file yang rusak atau tidak dapat diparse. Catat nama file bersama dengan pesan pengecualian sehingga item yang gagal dalam batch mudah untuk dicoba kembali.

Jaga Aspose.PSD Tetap Terbaru

Rendering AI meningkat secara stabil dari rilis ke rilis, termasuk perbaikan untuk shading, soft mask, dan gambar inline. Jika sebuah file dirender berbeda dari yang diharapkan, perbarui ke versi paket terbaru sebelum melakukan pemecahan masalah lebih lanjut.

Dapatkan Lisensi Gratis

Tanpa lisensi, Aspose.PSD for .NET berjalan dalam mode evaluasi dan menambahkan watermark pada gambar yang diekspor. Minta lisensi sementara gratis untuk menguji API lengkap selama 30 hari, kemudian terapkan sebelum pemanggilan pertama ke Image.Load.

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

Sumber Daya Tambahan Gratis

Kesimpulan

Mengonversi file AI dengan shading berbasis fungsi Type 1 ke PNG dalam C# sangat mudah dengan Aspose.PSD for .NET. Instal paket NuGet, muat file dengan Image.Load, konfigurasikan PngOptions, dan panggil Save: perpustakaan mengevaluasi shading selama rendering, sehingga PNG Anda cocok dengan karya seni asli tanpa Adobe Illustrator atau alat eksternal. Dengan ekspor halaman per halaman, pemeriksaan tipe yang aman, dan penanganan kesalahan yang eksplisit, kode yang sama dapat diskalakan dari pratinjau tunggal hingga pipeline konversi sisi server dengan volume tinggi.

FAQs

1. Apakah saya memerlukan lisensi untuk mengonversi shading AI Type 1 ke PNG? Tidak diperlukan lisensi untuk mencobanya, tetapi tanpa lisensi Aspose.PSD berjalan dalam mode evaluasi, yang menambahkan watermark pada output. Anda dapat meminta lisensi sementara gratis selama 30 hari untuk evaluasi tanpa batasan. Lisensi yang dibeli diperlukan untuk penggunaan produksi.

2. Bagaimana cara mengonversi file AI multi-halaman ke PNG di C#?
Baca properti AiImage.PageCount, lalu setel ActivePageIndex ke setiap indeks halaman dan panggil Save dengan jalur output terpisah. File AI lama melaporkan PageCount sebesar 0, jadi perlakukan sebagai satu halaman.

3. Apa yang terjadi jika file AI tidak mengandung shading Tipe 1?
Tidak ada yang berubah dalam kode Anda. Aspose.PSD merender apa pun yang ada dalam file, termasuk tipe gradien lain, jalur, dan gambar inline, dan menyimpan hasilnya ke PNG.

4. Apakah ada kehilangan kualitas saat mengekspor AI ke PNG?
PNG adalah format tanpa kehilangan kualitas, sehingga piksel yang dihasilkan oleh renderer disimpan tanpa artefak kompresi. Ukuran output mengikuti Width dan Height yang dilaporkan oleh AiImage yang dimuat.

5. Versi .NET apa yang didukung oleh Aspose.PSD for .NET? Aspose.PSD for .NET mendukung baik .NET Framework maupun .NET modern, dan build khusus .NET 8 serta .NET 9 telah tersedia sejak versi 25.4. Periksa tab Frameworks pada paket Aspose.PSD di NuGet untuk target tepat dari rilis yang Anda instal.

6. Bagaimana saya dapat mengontrol tingkat kompresi PNG? Set PngOptions.CompressionLevel ke nilai dari 0 (simpan, tercepat) hingga 9 (kompresi maksimum, file terkecil) sebelum memanggil Save. Kompresi bersifat lossless pada setiap tingkat, sehingga hanya memengaruhi ukuran file dan waktu enkoding.

Baca Selengkapnya