تنسيق PBM(5)

الاسم

pbm - تنسيق الصورة ثنائية المستوى لـ Netpbm

الوصف

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

تنسيق PBM هو تنسيق ملف أحادي اللون بأقل قاسم مشترك. يعمل كلغة مشتركة لعائلة كبيرة من مرشحات تحويل الصور النقطية. نظرًا لأن التنسيق لا يهتم بالكفاءة، فهو بسيط وعام بما يكفي لتطوير برامج بسهولة للتحويل من وإلى أي تنسيق رسومي آخر تقريبًا، أو لمعالجة الصورة.

الاسم "PBM" هو اختصار مشتق من "Portable Bit Map" (خريطة البت المحمولة).

هذا ليس تنسيقًا يُستخدم عادةً لتخزين ملف أو إرساله إلى شخص ما - فهو مكلف جدًا وغير معبر بما يكفي لذلك. إنه مجرد تنسيق وسيط. في أنقى استخداماته، يعيش فقط في أنبوب بين برنامجين آخرين.

التخطيط

تعريف التنسيق كما يلي.

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

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

•   رقم سحري لتحديد نوع الملف. الرقم السحري لصورة pbm هو الحرفان "P4".

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

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

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

•   ارتفاع الصورة بالبكسل، مرة أخرى بالنظام العشري ASCII.

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

•   شبكة من صفوف بارتفاع Height، بالترتيب من الأعلى إلى الأسفل. كل صف هو عرض Width بت، معبأة 8 بت لكل بايت، مع بتات غير مهمة لملء آخر بايت في الصف. يمثل كل بت بكسل: 1 أسود، 0 أبيض. ترتيب البكسلات من اليسار إلى اليمين. ترتيب تخزينها داخل كل بايت ملف هو من البت الأكثر أهمية إلى البت الأقل أهمية. ترتيب بايتات الملف من بداية الملف نحو نهايته.

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

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

    (قبل يونيو 2024، كان قد حُدد رمزيّ "رجوع الحامل" (carriage return) أو "تغذية السطر" (line feed) ليكونا جزءاً من التعليق ويتم تجاهلهما، ولكن طوال الـ 22 عاماً التي وُجدت فيها التعليقات في المواصفات القياسية، لم يقم نظام Netpbm بتطبيق ذلك مطلقاً).

جميع الأحرف المشار إليها هنا مشفرة في ASCII. "newline" يشير إلى الحرف المعروف في ASCII باسم تغذية السطر أو LF. حرف "الفراغ الأبيض" هو مسافة، CR، LF، TAB، VT، أو FF (أي ما تسميه دالة isspace() القياسية في ANSI C بالفراغ الأبيض).

  مجموعة فرعية دنيا

تعد صيغة PBM بسيطة للغاية لدرجة أن العديد من المبرمجين يكتبون برامج لمعالجتها
 بشكل مباشر، دون استخدام مكتبة مثل libnetpbm، حيث يقومون بـ "الهندسة العكسية"
 لمجموعة فرعية من هذه الصيغة بناءً على الأمثلة بدلاً من الرجوع إلى المواصفات.
 لذلك، إذا كنت ترغب في إنتاج صورة يمكن لأكبر عدد ممكن من البرامج قراءتها،
 فيجب عليك الالتزام بالمجموعة الفرعية التالية.

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

•   'P4' متبوعًا بسطر جديد

•   العرض والارتفاع ويفصل بينهما مسافة (مثل '50 100')،
        يتبعها سطر جديد

•   المنقّط

توجد صورة واحدة فقط في الملف.

يقوم البرنامج pnmtopnm بإنتاج هذه المجموعة الفرعية البسيطة (minimal subset)؛ لذا إذا كان لديك صورة PBM أكثر تعقيداً، يمكنك تمريرها عبر pnmtopnm إلى برنامج أقل تسامحاً (أي أكثر صرامة في معايير قبول الملفات).

  PBM العادي

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

تولد برامج Netpbm تنسيق Raw PBM بدلاً من Plain PBM بشكل مبدئي، لكن الخيار الشائع index.html#commonoptions -plain يختار Plain PBM.

الفرق هو:

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

•   الرقم السحري هو "P1" بدلاً من "P4".

•   كل بكسل في المسح النقطي يُمثل ببايت يحتوي على ASCII '1' أو '0'، ليمثل الأسود والأبيض على التوالي. لا توجد بتات حشو في نهاية الصف.

•   يُتجاهل الفراغ الأبيض في قسم المسح النقطي.

•   يمكنك وضع أي بيانات عشوائية تريدها بعد المسح النقطي، إذا بدأت بحرف فراغ أبيض.

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

    هذا مثال لصورة صغيرة بتنسيق PBM العادي.
    P1
    # feep.pbm
    24 7
    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 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0
    0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0
    0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0
    0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
    0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 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

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

يمكنك توليد تنسيق PBM العادي من تنسيق PBM العادي (الصورة الأولى في الملف فقط) باستخدام برنامج pnmtoplainpnm.

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

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

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

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

اسم الملف

لا توجد متطلبات على اسم ملف PBM، لكن التقليد هو استخدام اللاحقة ".pbm". "pnm" تقليدية أيضًا، للحالات التي لا يكون فيها التمييز بين التنسيقات الفرعية الخاصة لـ PNM مناسبًا.

التوافقية

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

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

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

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

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

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

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