تصغير حجم ملف PNG باستخدام C #

تصغير حجم ملف PNG باستخدام C #

يعد تخزين النظام موضوعًا بالغ الأهمية في عصر التكنولوجيا الحديث هذا. يتزايد حجم البيانات كل يوم واكتسب التمثيل المرئي لملفات البيانات شعبية كبيرة. ومع ذلك ، هناك العديد من الطرق لضغط تنسيقات ملفات الصور ولكن لا ينبغي المساس بجودة الصورة. لذلك ، سوف نستخدم .NET image compression API لضغط صور PNG. في منشور المدونة هذا ، سنتعلم كيفية تقليل حجم ملف PNG باستخدام C # برمجيًا.

سنغطي النقاط التالية في هذا المقال:

تثبيت API لضغط الصور

تقدم هذه المكتبة مجموعة واسعة من الأساليب والخصائص لمعالجة ومعالجة تنسيقات ملفات الصور المختلفة مثل JPEG و TIFF والمزيد. هناك طريقتان لتثبيت API في مشروع .NET الخاص بك.

لذلك ، يمكنك إما تنزيل ملفات DLL أو تشغيل الأمر التالي في مدير الحزم NuGet.

Install-Package Aspose.Imaging

كيفية تقليل حجم ملف PNG باستخدام C

يمكنك مشاهدة مجموعة ضخمة من الأساليب والخصائص هنا لضغط تنسيقات ملفات الصور. لذلك ، سنكتب الخطوات ومقتطف الشفرة لضغط ملف PNG برمجيًا.

اتبع الخطوات التالية:

  1. قم بتحميل صورة PNG المصدر عن طريق استدعاء طريقة Load.
  2. قم باستدعاء طريقة Save لحفظ الصورة المضغوطة بتنسيق PNG.
  3. عيّن قيمة للخاصية Progressive التي تشير إلى ما إذا كانت خيارات PngOptions تقدمية.
  4. IndexedColor يمثل نوع اللون حيث يكون كل بكسل عبارة عن فهرس لوح.
  5. قم بتعيين قيمة CompressionLevel لتعيين أقصى ضغط.
  6. ستحصل طريقة GetCloseImagePalette على لوحة ألوان من الصورة النقطية (صورة منصات نقالة) في حالة عدم احتواء الصورة على واحدة. في حالة وجود لوحة سيتم استخدامها بدلاً من إجراء العمليات الحسابية.
// قم بتحميل صورة PNG المصدر عن طريق استدعاء طريقة التحميل 
        using (Image image = Image.Load("image.png"))
        {
        // قم باستدعاء طريقة Save لحفظ الصورة المضغوطة بتنسيق PNG  
            image.Save(out.png, new ImageOptions.PngOptions()
            {
            // قم بتعيين قيمة للخاصية التقدمية التي تشير إلى ما إذا كانت خيارات PngOptions تقدمية.
                Progressive = true,
            // يمثل IndexedColor نوع اللون حيث يكون كل بكسل عبارة عن فهرس لوح 
                ColorType = FileFormats.Png.PngColorType.IndexedColor,
            // قم بتعيين قيمة CompressionLevel لتعيين الحد الأقصى للضغط 
                CompressionLevel = 9,
            // ستحصل طريقة GetCloseImagePalette على لوحة ألوان من الصورة النقطية (صورة منصات نقالة) في حالة عدم احتواء الصورة على واحدة. في حالة وجود لوحة ، سيتم استخدامها بدلاً من إجراء العمليات الحسابية. 
                Palette = ColorPaletteHelper.GetCloseImagePalette((RasterImage)image, 256, PaletteMiningMethod.Histogram)
            });
        }

واجهة برمجة تطبيقات ضغط الصور - خيارات متقدمة

في القسم السابق ، تعلمنا كيفية تقليل حجم ملف PNG باستخدام C #. الآن ، دعنا نستكشف بعض الأساليب والخصائص البارزة الأخرى لضغط الصور API. في هذا القسم ، سنقوم باستدعاء API مخصص لإنشاء ملف PNG برمجيًا.

يمكنك اتباع الخطوات ومقتطف الشفرة المذكور أدناه:

  1. قم بتهيئة مثيل لفئة PngImage الذي ينشئ صورة PNG بحجم 100 × 100 بكسل.
  2. الطريقة LinearGradientBrush تغلف الفرشاة بتدرج خطي.
  3. يقوم بتهيئة مثيل جديد لبنية Point بالإحداثيات المحددة.
  4. إنشاء مثيل لفئة Graphics التي تمثل الرسومات وفقًا لمحرك الرسومات المستخدم في التجميع الحالي.
  5. املأ الصورة بالتدرج اللوني الأزرق الشفاف باستخدام طريقة FillRectangle.
  6. قم بإنشاء كائن من فئة PngOptions.
  7. عيّن قيمة للخاصية Progressive التي تشير إلى ما إذا كانت خيارات PngOptions تقدمية.
  8. يمكنك ضبط الدقة الأفقية والعمودية على 96 بكسل لكل بوصة عن طريق تهيئة فئة ResolutionSetting.
  9. اضبط نوع اللون عن طريق تعيين قيمة لخاصية ColorType.
  10. قم بتعيين قيمة لخاصية CompressionLevel لتعيين أقصى مستوى للضغط.
  11. تحدد خاصية FilterType نوع المرشح المستخدم أثناء عملية حفظ ملف PNG.
  12. قم بتعيين عدد وحدات البت لكل قناة عن طريق تعيين قيمة لخاصية BitDepth.
  13. حفظ في ملف عن طريق استدعاء طريقة Save.

    // قم بتهيئة مثيل لفئة PngImage التي تنشئ صورة PNG بحجم 100 × 100 بكسل. 
    using (Aspose.Imaging.FileFormats.Png.PngImage pngImage = new Aspose.Imaging.FileFormats.Png.PngImage(100, 100))
    {
        // تغلف طريقة LinearGradientBrush فرشاة بتدرج خطي 
        Aspose.Imaging.Brushes.LinearGradientBrush gradientBrush = new Aspose.Imaging.Brushes.LinearGradientBrush(
                // يقوم بتهيئة مثيل جديد لهيكل النقطة بالإحداثيات المحددة. 
                new Aspose.Imaging.Point(0, 0),
                new Aspose.Imaging.Point(pngImage.Width, pngImage.Height),
                Aspose.Imaging.Color.Blue,
                Aspose.Imaging.Color.Transparent);
        // Intantiate مثيل لفئة Graphics التي تمثل الرسومات وفقًا لمحرك الرسومات المستخدم في التجميع الحالي.
        Aspose.Imaging.Graphics graphics = new Aspose.Imaging.Graphics(pngImage);

        // املأ الصورة بالتدرج اللوني الأزرق الشفاف باستخدام طريقة FillRectangle. 
        graphics.FillRectangle(gradientBrush, pngImage.Bounds);
        // قم بإنشاء كائن من فئة PngOptions 
        Aspose.Imaging.ImageOptions.PngOptions saveOptions = new Aspose.Imaging.ImageOptions.PngOptions();

        // يعيّن قيمة للخاصية التقدمية التي تشير إلى ما إذا كانت خيارات PngOptions تقدمية. 
        saveOptions.Progressive = true;

        // اضبط الدقة الأفقية والعمودية على 96 بكسل لكل بوصة عن طريق تهيئة فئة ResolutionSetting. 
        saveOptions.ResolutionSettings = new Aspose.Imaging.ResolutionSetting(96.0, 96.0);

        // عيّن نوع اللون عن طريق تعيين قيمة لخاصية ColorType.
        saveOptions.ColorType = Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha;

        // قم بتعيين قيمة للخاصية CompressionLevel لتعيين الحد الأقصى لمستوى الضغط. 
        saveOptions.CompressionLevel = 9;

        // تحدد الخاصية FilterType نوع المرشح المستخدم أثناء عملية حفظ ملف png.
        saveOptions.FilterType = Aspose.Imaging.FileFormats.Png.PngFilterType.Adaptive;

        // قم بتعيين عدد وحدات البت لكل قناة عن طريق تعيين قيمة لخاصية BitDepth.
        saveOptions.BitDepth = 8;

        // احفظ في ملف عن طريق استدعاء طريقة الحفظ. 
        pngImage.Save( "output.png", saveOptions);
    }

يمكنك أن ترى الإخراج في الصورة أدناه:

ضغط الصور API

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

يمكنك الحصول على ترخيص مؤقت مجاني لتجربة واجهة برمجة التطبيقات بدون قيود تقييمية.

تلخيص لما سبق

يمكننا إنهاء منشور المدونة هذا هنا. نأمل أن تكون قد تعلمت كيفية تقليل حجم ملف PNG باستخدام C # برمجيًا. بالإضافة إلى ذلك ، فقد مررنا ببعض الطرق المتقدمة الأخرى لضغط الصور API حيث أنشأنا ملف PNG محسن. ومع ذلك ، يمكنك زيارة هذا الرابط لمزيد من الأساليب والخصائص المتعلقة بتنسيق ملف PNG. قبل كل شيء ، لا تتخط توثيق مكتبة .NET لتعرف النظام البيئي. سنكتب عن مواضيع مفيدة أخرى في مشاركات المدونة المستقبلية. لذلك ، ابق على اتصال مع conholdate.com للحصول على التحديثات.

طرح سؤال

يمكنك إخبارنا بأسئلتك أو استفساراتك على المنتدى.

أسئلة وأجوبة

كيفية ضغط صورة PNG في C #؟

قم بتثبيت .NET image compression API لضغط ومعالجة تنسيقات ملفات PNG. يوفر طرقًا وخصائص لضغط تنسيقات ملفات الصور الشائعة الأخرى مثل JPEG و TIFF والمزيد.

كيفية تصغير حجم ملف الصورة لتنسيق PNG؟

تتيح لك الطريقة تقليل حجم ملف PNG باستخدام C # برمجيًا. علاوة على ذلك ، يمكنك تكوين استدعاء API وفقًا لمتطلباتك.

كيفية تغيير حجم صورة PNG في مثال كود C #؟

اتبع هذا الرابط للتعرف على مقتطف الشفرة الذي يغير حجم صورة PNG برمجيًا. يعد .NET API هذا قويًا ويوفر مجموعة واسعة من الأساليب والخصائص.

أنظر أيضا