عرض رسومات Adobe Illustrator (AI) على الخادم أصعب مما يبدو، و Type 1 function-based shading هي إحدى الميزات التي تُعقِّد عمل العديد من عارضات الرسومات. إذا كانت خط أنابيبك تُولِّد صورًا مصغرة أو معاينات ويب أو نماذج طباعة من ملفات AI، فأنت بحاجة إلى رسم تلك التظليل بشكل صحيح، وليس استبداله بملء مسطح. Aspose.PSD for .NET يتيح لك تحويل ملفات AI التي تحتوي على تظليل Type 1 إلى PNG باستخدام C# ببضع أسطر من الشيفرة دون الحاجة إلى تثبيت Adobe Illustrator. يُرشدك هذا البرنامج التعليمي خلال تثبيت SDK، تحميل ملف AI، تكوين PngOptions، تصدير المستندات متعددة الصفحات، ومعالجة الأخطاء في بيئة الإنتاج.

لماذا تحويل تظليل AI النوع 1 إلى PNG

تخزن ملفات AI الحديثة أعمالها الفنية في بنية متوافقة مع PDF، وتحدد PDF عدة أنواع من التظليل لتدرجات اللون السلسة. يصف التظليل من النوع 2 (محوري) والنوع 3 (شعاعي) التدرجات الخطية والدائرية. التظليل من النوع 1 يعتمد على الدالة: يتم حساب اللون في كل نقطة بواسطة دالة رياضية تعتمد على إحداثيات x و y الخاصة بها. هذا يجعلها مرنة جدًا، لكنه يعني أيضًا أن المُعالج يجب أن يقيم الدالة عبر كامل منطقة التظليل.

عندما لا يقوم عارض الصور بتنفيذ التظليل القائم على الدوال، يتم عادةً تخطي المنطقة المظللة أو رسمها بلون واحد، وبالتالي لا تتطابق الصورة المصدرة مع التصميم الأصلي. تقوم Aspose.PSD for .NET بتقييم تظليل Type 1 داخليًا أثناء عملية العرض، لذا فإن ملف PNG الذي تحفظه يعكس العمل الفني كما تم تصميمه.

مع هذه القدرة، يمكن لمطوري .NET أن:

  • إنشاء صور مصغرة ومعاينات دقيقة لأنظمة إدارة الأصول الرقمية (DAM).
  • نشر إصدارات PNG من أعمال Illustrator على المواقع الإلكترونية والتطبيقات التي لا يمكنها عرض ملفات AI.
  • بناء خطوط تحويل دفعية مؤتمتة على الخادم تعمل على Windows أو Linux أو داخل الحاويات.

استخدام Aspose.PSD لتحويل تظليل AI النوع 1

Aspose.PSD for .NET هي مكتبة C# لإنشاء وتحرير وتحويل ملفات Photoshop (PSD, PSB) ولتحميل وتصدير ملفات Adobe Illustrator (AI). تعمل بدون Adobe Photoshop أو Illustrator وتوزع كحزمة NuGet.

الفئات المستخدمة في هذا البرنامج التعليمي هي:

  • Image (namespace Aspose.PSD): نقطة الدخول لتحميل أي ملف مدعوم عبر Image.Load.
  • AiImage (namespace Aspose.PSD.FileFormats.Ai): يمثل مستند Illustrator محمَّل ويكشف عن الأعضاء مثل PageCount و ActivePageIndex.
  • PngOptions (namespace Aspose.PSD.ImageOptions): يتحكم في إعدادات تصدير PNG مثل ColorType و CompressionLevel.
  • PngColorType (namespace Aspose.PSD.FileFormats.Png): يختار تنسيق بكسل PNG.

التثبيت

قم بتثبيت الحزمة من وحدة تحكم مدير الحزم:

Install-Package Aspose.PSD

أو باستخدام .NET CLI:

dotnet add package Aspise.PSD

يمكنك معرفة المزيد على صفحة منتج Aspose.PSD for .NET، في وثائق المطورين، وفي مرجع API.

1. إعداد مشروع .NET الخاص بك

إنشاء تطبيق وحدة تحكم لاستضافة كود التحويل. الأمثلة أدناه تستخدم العبارات ذات المستوى الأعلى ومطابقة الأنماط في C# 9، لذا استهدف .NET 6 أو أحدث.

  1. إنشاء مشروع جديد من سطر الأوامر أو في Visual Studio:
dotnet new console -n AiShadingConversion
cd AiShadingConversion
  1. أضف حزمة Aspose.PSD for .NET باستخدام أحد أوامر التثبيت الموضحة أعلاه.
  2. افتح Program.cs وأضف توجيهات using المطلوبة في الأعلى:
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، وتحتوي Aspose.PSD.FileFormats.Ai على AiImage. PngOptions موجودة في Aspose.PSD.ImageOptions، بينما توفر Aspose.PSD.FileFormats.Png تعداد PngColorType. Aspose.PSD.CoreExceptions تحتوي على ImageLoadException، والتي ستستخدمها لمعالجة الأخطاء.

2. تحميل ملف AI يحتوي على تظليل من النوع 1

Image.Load يكتشف تنسيق الملف تلقائيًا. عندما يكون المصدر مستند Illustrator، يكون الكائن المرتجع هو AiImage. التحقق من النوع باستخدام مطابقة الأنماط أكثر أمانًا من التحويل المباشر، لأن التحويل المباشر يطرح استثناء InvalidCastException إذا قام أحدهم بتمرير ملف PSD أو أي تنسيق مدعوم آخر.

ما يفعله الكود:

  • يبني المسار الكامل إلى ملف AI المصدر.
  • يقوم بتحميل الملف باستخدام Image.Load.
  • يتأكد من أن النتيجة هي AiImage ويطبع حجمها وعدد الصفحات.
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}");
}

كتلة using تقوم بتحرير الصورة وتحرير مواردها بمجرد الانتهاء منها. لا يتطلب إعدادًا خاصًا بالتظليل: تظليل النوع 1 هو جزء من محتوى المستند ويتم معالجته بواسطة المُعالج عند الحفظ.

3. حفظ الصورة كـ PNG

يتطلب تصدير إلى PNG استدعاءً واحدًا لـ Save، الذي يقبل مسار الإخراج ومثيل PngOptions. ضبط ColorType إلى PngColorType.TruecolorWithAlpha يكتب صورة RGBA بعمق 32 بت بحيث يتم الحفاظ على أي شفافية ينتجها المُعالج، وCompressionLevel (0 إلى 9) يوازن بين سرعة الترميز وحجم الملف.

ما يفعله الكود:

  • ينشئ مجلد الإخراج إذا لم يكن موجودًا.
  • يحمل ملف AI كـ AiImage.
  • يضبط PngOptions ويحفظ العمل الفني المُرَسَم، بما في ذلك تظليل Type 1، كملف 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}");
}

افتح shadingType1.png في أي عارض صور وقارنها بالعمل الفني الأصلي للتأكد من أن المناطق المظللة تُظهر كما هو متوقع.

مثال كامل: تحويل تظليل AI النوع 1 إلى PNG في C#

الملف Program.cs التالي يجمع كل شيء في تطبيق وحدة تحكم جاهز للإنتاج. يتحقق من صحة الإدخال، يصدر كل صفحة من ملف AI متعدد الصفحات، ويتعامل مع أخطاء التحميل.

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. نصائح، الأخطاء الشائعة، واعتبارات الأداء

تصدير ملفات AI متعددة الصفحات صفحة بصفحة

يمكن أن تحتوي مستندات Illustrator على عدة صفحات (لوحات فنية). AiImage.PageCount تُعيد عدد الصفحات، و ActivePageIndex يحدد الصفحة التي يقوم Save بتصويرها. اضبط الفهرس، احفظ، وكرر، كما هو موضح في المثال الكامل. لاحظ أن AiImage.Layers تُعيد كائنات AiLayerSection التي تصف بنية المستند؛ فهي ليست صورًا منفصلة، لذا استخدم الصفحات بدلاً من الطبقات عندما تحتاج إلى PNG واحد لكل لوحة فنية.

استخدم مطابقة الأنماط بدلاً من التحويلات العمياء

تحويل مثل (AiImage)Image.Load(path) يكون مقبولًا عندما تتحكم في الإدخال. في معالجات التحميل أو وظائف الدُفعات، يفضَّل استخدام image is AiImage aiImage حتى يتم الإبلاغ عن الصيغ غير المتوقعة بوضوح بدلاً من إلقاء InvalidCastException.

إدارة الذاكرة في التحويلات الدفعية

إن معالجة الرسومات الكبيرة أو المعقدة، خاصةً مع التظليل القائم على الدوال، تتطلب الكثير من وحدة المعالجة المركزية والذاكرة. احرص دائمًا على تغليف كل صورة تم تحميلها داخل كتلة using، ومعالجة الملفات واحدةً تلو الأخرى (أو باستخدام درجة صغيرة ومحدودة من التوازي)، وإعادة استخدام كائن PngOptions واحد عبر الملفات.

حفظ الشفافية

استخدم PngColorType.TruecolorWithAlpha عندما يتم وضع PNG فوق محتوى آخر، مثل صفحة ويب أو أداة تصميم. إذا لم تكن بحاجة إلى قناة ألفا، فإن إخراج truecolor بدون ألفا ينتج ملفات أصغر.

معالجة الأخطاء بشكل صريح

تحقق من وجود ملف الإدخال قبل تحميله، والتقط استثناء ImageLoadException (المساحة الاسمية Aspose.PSD.CoreExceptions) للملفات التي تكون تالفة أو لا يمكن تحليلها. سجّل اسم الملف مع رسالة الاستثناء حتى تكون العناصر الفاشلة في الدفعة سهلة إعادة المحاولة.

حافظ على تحديث Aspose.PSD

تحسين عرض الذكاء الاصطناعي يتقدم بثبات من إصدار إلى آخر، بما في ذلك إصلاحات التظليل والكمامات الناعمة والصور المضمنة. إذا تم عرض ملف بشكل مختلف عن المتوقع، قم بتحديث إلى أحدث إصدار من الحزمة قبل المتابعة في استكشاف الأخطاء وإصلاحها.

احصل على ترخيص مجاني

بدون ترخيص، Aspose.PSD for .NET يعمل في وضع التقييم ويضيف علامة مائية إلى الصور المصدرة. اطلب رخصة مؤقتة مجانية لاختبار واجهة برمجة التطبيقات الكاملة لمدة 30 يومًا، ثم قم بتطبيقها قبل أول استدعاء لـ Image.Load.

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

موارد إضافية مجانية

الخلاصة

تحويل ملفات AI ذات التظليل القائم على الدوال من النوع 1 إلى PNG في C# سهل مع Aspose.PSD for .NET. قم بتثبيت حزمة NuGet، وحمّل الملف باستخدام Image.Load، واضبط PngOptions، ثم استدعِ Save: تقوم المكتبة بتقييم التظليل أثناء التصيير، لذا يتطابق PNG الخاص بك مع العمل الأصلي دون الحاجة إلى Adobe Illustrator أو أدوات خارجية. مع التصدير صفحةً بصفحة، وفحوصات النوع الآمنة، ومعالجة الأخطاء الصريحة، يمكن أن يتوسع نفس الكود من معاينة واحدة إلى خطوط تحويل عالية الحجم على الخادم.

الأسئلة الشائعة

1. هل أحتاج إلى ترخيص لتحويل تظليل AI Type 1 إلى PNG؟ لا يلزم الحصول على ترخيص لتجربته، ولكن بدون ترخيص يعمل Aspose.PSD في وضع التقييم، مما يضيف علامة مائية إلى الناتج. يمكنك طلب ترخيص مؤقت مجاني لمدة 30 يومًا للتقييم دون قيود. يلزم الحصول على ترخيص مدفوع للاستخدام في الإنتاج.

2. كيف يمكنني تحويل ملف AI متعدد الصفحات إلى PNG في C#? اقرأ خاصية AiImage.PageCount، ثم اضبط ActivePageIndex إلى كل فهرس صفحة واستدعِ Save مع مسار إخراج منفصل. تقارير ملفات AI القديمة تُظهر PageCount بقيمة 0، لذا عالجها كصفحة واحدة.

3. ماذا يحدث إذا لم يحتوي ملف AI على تظليل من النوع 1؟ لا يتغير شيء في الكود الخاص بك. Aspose.PSD يقوم بتصوير ما يحتويه الملف، بما في ذلك أنواع التدرج الأخرى، والمسارات، والصور المضمنة، ويحفظ النتيجة كملف PNG.

4. هل هناك أي فقدان في الجودة عند تصدير AI إلى PNG؟ PNG هو تنسيق غير مضغوط، لذا يتم تخزين البكسلات التي ينتجها المُعالج دون أي تشوهات ناتجة عن الضغط. يتبع حجم الإخراج القيم Width و Height التي تم الإبلاغ عنها بواسطة AiImage المحمَّل.

5. أي إصدارات .NET يدعم Aspose.PSD for .NET؟ Aspose.PSD for .NET يدعم كل من .NET Framework و .NET الحديث، وتم إصدار بنى مخصصة لـ .NET 8 و .NET 9 منذ الإصدار 25.4. تحقق من علامة تبويب Frameworks لحزمة Aspose.PSD على NuGet للحصول على الأهداف الدقيقة للإصدار الذي تقوم بتثبيته.

6. كيف يمكنني التحكم في مستوى ضغط PNG؟ Set PngOptions.CompressionLevel إلى قيمة من 0 (تخزين، أسرع) إلى 9 (أقصى ضغط، أصغر ملف) قبل استدعاء Save. الضغط بدون فقدان للبيانات في كل مستوى، لذا يؤثر فقط على حجم الملف ووقت الترميز.

اقرأ المزيد