مواصفات تنسيق PGM(5)

الاسم
pgm - تنسيق الصورة الرمادية Netpbm

الوصف

هذا البرنامج جزء من Netpbm(1) .

تنسيق PGM هو تنسيق ملف رمادي ذو قاسم مشترك أدنى. صُمم ليكون سهل التعلم والبرمجة للغاية. (بسيط جدًا لدرجة أن معظم الناس سيعكسون هندسته ببساطة لأنه أسهل من قراءة هذه المواصفات).

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

الاسم "PGM" هو اختصار مشتق من "Portable Gray Map".

أحد المتغيرات الرسمية لـ PGM هو قناع الشفافية. يتم تمثيل قناع الشفافية في Netpbm بواسطة صورة PGM، باستثناء أنه بدلاً من شدة البكسل، توجد قيم عتامة. انظر أدناه.

التنسيق

تعريف التنسيق كما يلي. يمكنك استخدام مكتبة الروتينات الفرعية C libnetpbm(1) لقراءة وتفسير التنسيق بشكل ملائم ودقيق.

يتكون ملف PGM من سلسلة من صورة PGM واحدة أو أكثر. لا توجد بيانات أو محددات أو حشو قبل الصور أو بعدها أو بينها.

تتكون كل صورة PGM مما يلي:

•   'رقم سحري' لتحديد نوع الملف. الرقم السحري لصورة pgm هو الحرفان 'P5'.

•   مساحة بيضاء (فراغات، وعلامات جدولة، ومحارف CR، ومحارف LF).

•   عرض، منسق كمحارف ASCII بالنظام العشري.

•   مساحة بيضاء.

•   الارتفاع، مجددًا بنظام ASCII العشري.

•   مساحة بيضاء.

•   القيمة الرمادية القصوى (Maxval)، مرة أخرى بالنظام العشري ASCII. يجب أن تكون أقل من 65536 وأكبر من الصفر.

•   محرف مسافة بيضاء واحد (عادةً سطر جديد).

•   شبكة من صفوف الارتفاع، بالترتيب من الأعلى إلى الأسفل. يتكون كل صف من قيم رمادية العرض، بالترتيب من اليسار إلى اليمين. كل قيمة رمادية هي رقم من 0 إلى Maxval، حيث 0 أسود و Maxval أبيض. يتم تمثيل كل قيمة رمادية في ثنائي خالص إما بـ 1 أو 2 بايت. إذا كانت Maxval أقل من 256، فهي 1 بايت. خلاف ذلك، فهي 2 بايت. البايت الأكثر أهمية هو الأول.

    صف الصورة أفقي. العمود عمودي. البكسلات في الصورة مربعة ومتلاصقة.

    كل قيمة رمادية هي رقم متناسب مع شدة البكسل، معدلة بواسطة دالة نقل جاما ITU-R Recommendation BT.709. (تحدد دالة النقل هذه رقم جاما 2.2 ولها قسم خطي للشدة الصغيرة). القيمة صفر هي بالتالي أسود. تمثل قيمة Maxval اللون الأبيض CIE D65 والقيمة الأكثر شدة في الصورة وأي صورة أخرى قد تُقارن بها الصورة.

    لاحظ أن الاختلاف الشائع عن تنسيق PGM هو جعل القيمة الرمادية 'خطية'، أي كما هو محدد أعلاه باستثناء بدون تعديل جاما. يأخذ pnmgamma متغير PGM هذا كمدخل وينتج PGM حقيقي كمخرج.

    في اختلاف قناع الشفافية عن PGM، تمثل القيمة العتامة. إنها متناسبة مع جزء شدة البكسل الذي سيظهر بدلاً من البكسل الأساسي. لذا ما يعني عادةً الأبيض يمثل العتامة الكلية وما يعني عادةً الأسود يمثل الشفافية الكلية. بينهما، ستحسب شدة بكسل مركب من بكسل "تحت" و "فوق" كـ under * (1-(alpha/alpha_maxval)) + over * (alpha/alpha_maxval). لاحظ أنه لا توجد دالة نقل جاما في قناع الشفافية.

السلاسل التي تبدأ بـ '#' قد تكون تعليقات، تماماً كما في PBM(1) .

لاحظ أنه يمكنك استخدام pamdepth للتحويل بين التنسيق بـ 1 بايت لكل قيمة رمادية والتنسيق بـ 2 بايت لكل قيمة رمادية.

جميع المحارف المشار إليها هنا مشفرة بترميز ASCII. تشير كلمة 'newline' إلى المحرف المعروف في ASCII باسم Line Feed أو LF. محرف 'white space' هو المسافة، أو CR، أو LF، أو TAB، أو VT، أو FF (أي ما تسميه دالة isspace()‎ في معيار ANSI C مسافة بيضاء).

  PGM عادي

يوجد في الواقع إصدار آخر من تنسيق PGM نادر إلى حد ما: تنسيق PGM 'العادي'. التنسيق أعلاه، الذي يُعتبر عمومًا التنسيق الطبيعي، يُعرف بتنسيق PGM 'الخام'. انظر pbm(1) للحصول على بعض التعليقات حول كيفية ارتباط التنسيقين العادي والخام ببعضهما وكيفية استخدامهما.

الفرق في التنسيق المجرد هو:

•   توجد صورة واحدة بالضبط في الملف.

•   الرقم السحري هو P2 بدلاً من P5.

•   يُمثل كل بكسل في المسح النقطي كرقم عشري ASCII (بحجم عشوائي).

•   يحتوي كل بكسل في المسح النقطي على مسافة بيضاء قبله وبعده. يجب أن يكون هناك حرف واحد على الأقل من المسافة البيضاء بين أي بكسلين، لكن لا يوجد حد أقصى.

•   لا ينبغي أن يتجاوز طول أي سطر 70 محرفًا.

هذا مثال لصورة صغيرة بتنسيق PGM العادي.
P2
# feep.pgm
24 7
15
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
0  3  3  3  3  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0 15  0
0  3  3  3  0  0  0  7  7  7  0  0  0 11 11 11  0  0  0 15 15 15 15  0
0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0  0  0
0  3  0  0  0  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15  0  0  0  0
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

يوجد محرف سطر جديد في نهاية كل من هذه الأسطر.

يجب أن تكون البرامج التي تقرأ هذا التنسيق متسامحة قدر الإمكان، وتقبل أي شيء يشبه عن بعد PGM.

نوع وسائط الإنترنت

لم يُسجل أي نوع وسائط إنترنت (يُعرف أيضًا بنوع MIME، نوع المحتوى) لـ PGM لدى IANA، لكن القيمة image/x-portable-graymap تقليدية.

لاحظ أن نوع وسائط الإنترنت PNM من نوع image/x-portable-anymap ينطبق أيضًا.

اسم الملف

لا توجد متطلبات بشأن اسم ملف PGM، لكن التقليد هو استخدام اللاحقة '.pgm'. 'pnm' تقليدية أيضًا، للحالات التي لا يكون فيها التمييز بين التنسيقات الفرعية الخاصة لـ PNM مناسبًا.

التوافقية

قبل أبريل 2000، لم يكن بإمكان ملف PGM بتنسيق خام أن يحتوي على maxval أكبر من 255. وبالتالي، لم يكن بإمكانه احتواء أكثر من بايت واحد لكل عينة. قد تعتمد البرامج القديمة على هذا.

قبل يوليو 2000، كان يمكن أن يكون هناك صورة واحدة على الأكثر في ملف PGM. ونتيجة لذلك، تتجاهل معظم أدوات معالجة ملفات PGM (ولا تقرأ) أي بيانات بعد الصورة الأولى.

انظر أيضًا
pnm(1) , pbm(1) , ppm(1) , pam(1) , libnetpbm(1) , برامج تعالج PGM(1) ,

المؤلف
حقوق النشر (C) 1989، 1991 بواسطة جيف بوسكانزر.

مصدر المستند
أُنشئت صفحة الدليل هذه بواسطة أداة Netpbm المسماة 'makeman' من مصدر HTML. التوثيق الرئيسي موجود في

    http://netpbm.sourceforge.net/doc/pgm.html

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.