\ .\" This man page was generated by the Netpbm tool 'makeman' from HTML source. .\" Do not hand-hack it! If you have bug fixes or improvements, please find .\" the corresponding HTML page on the Netpbm website, generate a patch .\" against that, and send it to the Netpbm maintainer. .TH "The PBM Format" 5 "07 November 2025" "netpbm documentation" .SH "نام (NAME)" pbm \- قالب تصویر دوسطحی Netpbm .UN description .SH "توضیحات (DESCRIPTION)" .PP این برنامه بخشی از .BR "Netpbm" (1)\c \& است\&. .PP قالب PBM ساده‌ترین مخرج مشترک قالب‌های پرونده تک‌رنگ (سیاه و سفید) است\&. این قالب به عنوان زبان مشترک خانواده بزرگی از فیلترهای تبدیل تصویر بیت‌مپ عمل می‌کند\&. از آنجا که این قالب به بهره‌وری و فشرده‌سازی توجهی ندارد، به قدری ساده و عمومی است که به آسانی می‌توان برنامه‌هایی برای تبدیل به و از تقریباً هر قالب گرافیکی دیگر یا جهت ویرایش تصویر توسعه داد\&. .PP نام "PBM" کوته‌نوشتی برگرفته از "Portable Bit Map" (بیت‌مپ قابل حمل) است\&. .PP این قالبی نیست که معمولاً برای ذخیره یک فایل یا ارسال آن به دیگران استفاده شود \-\- برای این منظور بیش از حد حجیم بوده و به اندازه کافی رسا نیست\&. این صرفاً یک قالب واسط است\&. در خالص‌ترین کاربرد خود، تنها در یک لوله (pipe) ارتباطی میان دو برنامه دیگر جریان می‌یابد\&. .UN layout .SH "چیدمان و ساختار (THE LAYOUT)" .PP تعریف قالب به شرح زیر است\&. .PP یک فایل PBM شامل دنباله‌ای از یک یا چند تصویر PBM است\&. هیچ داده، جداکننده یا داده پرکننده‌ای قبل، بعد یا میان تصاویر وجود ندارد\&. .PP هر تصویر PBM از اجزای زیر تشکیل شده است: .IP \(bu یک "عدد جادویی" (magic number) برای شناسایی نوع فایل\&. عدد جادویی یک تصویر pbm دو نویسه "P4" است\&. .IP \(bu فاصله‌های خالی (فاصله‌ها، تب‌ها، بازگشت به سطر، سطر جدید)\&. .IP \(bu عرض تصویر به پیکسل، قالب‌بندی‌شده به صورت نویسه‌های ده‌دهی در ASCII\&. .IP \(bu فاصله خالی\&. .IP \(bu ارتفاع تصویر به پیکسل، مجدداً به صورت ده‌دهی در ASCII\&. .IP \(bu یک نویسه فاصله خالی واحد (معمولاً سطر جدید)\&. .IP \(bu یک شطرنجی (رستر) از سطرهای ارتفاع، به ترتیب از بالا به پایین\&. هر سطر به اندازه عرض تصویر بیت دارد که به صورت ۸ بیت در هر بایت فشرده شده‌اند، همراه با بیت‌های بی‌اثر (don't care) برای پر کردن آخرین بایت در سطر\&. هر بیت نشان‌دهنده یک پیکسل است: ۱ سیاه و ۰ سفید است\&. ترتیب پیکسل‌ها از چپ به راست است\&. ترتیب ذخیره‌سازی آن‌ها در هر بایت فایل از باارزش‌ترین بیت به کم‌ارزش‌ترین بیت است\&. ترتیب بایت‌های فایل از ابتدای فایل به سمت انتهای فایل است\&. .sp یک سطر از یک تصویر افقی است\&. یک ستون عمودی است\&. پیکسل‌های تصویر مربعی و پیوسته هستند\&. .IP \(bu پیش از نویسه فاصله خالی جداکننده شطرنجی، هر نویسه‌ای از یک علامت "#" تا (اما نه شامل) نویسه بعدی بازگشت به سطر یا سطر جدید، یا پایان فایل، یک توضیح (کامنت) محسوب شده و نادیده گرفته می‌شود\&. .sp (پیش از ژوئن ۲۰۲۴، مشخص شده بود که نویسه بازگشت به سطر یا سطر جدید بخشی از کامنت باشد و نادیده گرفته شود، اما در طول ۲۲ سالی که کامنت‌ها در مشخصات وجود داشتند، Netpbm هرگز آن را پیاده‌سازی نکرد)\&. .PP تمامی نویسه‌های ذکرشده در این نوشتار در قالب ASCII کدگذاری شده‌اند\&. واژه "newline" به نویسه‌ای اشاره دارد که در استاندارد ASCII با نام Line Feed یا LF شناخته می‌شود\&. نویسه "فاصله خالی" شامل space، CR، LF، TAB، VT یا FF است (یعنی آنچه در تابع isspace() استاندارد زبان C به عنوان فاصله خالی شناخته می‌شود)\&. .UN minimal .SS "زیرمجموعه کمینه (Minimal Subset)" .PP قالب PBM آن‌چنان ساده است که بسیاری از برنامه‌نویسان برنامه‌هایی برای پردازش مستقیم آن بدون استفاده از کتابخانه‌ای مانند \fBlibnetpbm\fP می‌نویسند و با مهندسی معکوس از روی مثال‌ها به جای استفاده از مشخصات رسمی، زیرمجموعه‌ای از این قالب را به کار می‌گیرند\&. بنابراین، اگر می‌خواهید تصویری تولید کنید که تا حد امکان برنامه‌های بیشتری قادر به خواندن آن باشند، باید به زیرمجموعه زیر پایبند بمانید\&. .PP تصویر شامل بایت‌های زیر است: .IP \(bu عبارت 'P4' به همراه سطر جدید .IP \(bu عرض و ارتفاع که با یک فاصله از هم جدا شده‌اند (مانند '50 100')، به همراه سطر جدید .IP \(bu داده‌های شطرنجی (raster) .PP تنها یک تصویر در فایل وجود دارد\&. .PP برنامه \fBpnmtopnm\fP این زیرمجموعه کمینه را تولید می‌کند، بنابراین اگر یک تصویر PBM پیچیده‌تر دارید، می‌توانید آن را از طریق \fBpnmtopnm\fP به برنامه‌ای با انعطاف کمتر تحویل دهید\&. .UN plainpbm .SS "قالب PBM متنی (Plain PBM)" .PP در واقع نسخه دیگری از قالب PBM نیز وجود دارد که حتی ساده‌تر و به مراتب ولخرجانه‌تر از نظر مصرف فضا نسبت به PBM است و Plain PBM نام دارد\&. در واقع Plain PBM زودتر ابداع شد، اما حتی سازنده آن نیز پس از مدتی نتوانست هدررفت بی‌ملاحظه منابع را تحمل کند و به آنچه اکنون به عنوان قالب استاندارد PBM می‌شناسیم روی آورد\&. اما Plain PBM آن‌چنان دارای افزونگی است \-\- آن‌قدر غلوشده است \-\- که خراب کردن آن عملاً غیرممکن است\&. شما می‌توانید آن را از طریق بی‌قاعده‌ترین سیستم‌های ایمیل (که هدف اولیه ایجاد قالب PBM بود) منتقل کنید و باز هم خوانا به مقصد برسد\&. می‌توانید ده‌ها بیت تصادفی را وارونه کنید و باز هم تصویر اصلی را به سادگی بازسازی نمایید\&. و نیازی به تعریف دقیق قالب در اینجا نیست، چرا که صرفاً با بررسی چشمی می‌توانید آن را رمزگشایی کنید\&. .PP برنامه‌های Netpbm به طور پیش‌فرض قالب Raw PBM را به جای Plain PBM تولید می‌کنند، اما با استفاده از گزینه عمومی .UR index.html#commonoptions \fB-plain\fP .UE قالب Plain PBM انتخاب می‌شود\&. .PP تفاوت‌ها عبارتند از: .IP \(bu دقیقاً یک تصویر در هر فایل وجود دارد\&. .IP \(bu "عدد جادویی" به جای "P4" برابر با "P1" است\&. .IP \(bu هر پیکسل در بخش شطرنجی با یک بایت حاوی نویسه اسکی '1' یا '0' نشان داده می‌شود که به ترتیب نمایانگر سیاه و سفید هستند\&. هیچ بیت پرکننده‌ای در انتهای سطر وجود ندارد\&. .IP \(bu فاصله خالی در بخش شطرنجی نادیده گرفته می‌شود\&. .IP \(bu می‌توانید هر داده بی‌استفاده‌ای را که مایلید پس از شطرنجی قرار دهید، به شرط آنکه با یک نویسه فاصله خالی آغاز شود\&. .IP \(bu هیچ سطری نباید طولانی‌تر از ۷۰ نویسه باشد\&. در اینجا نمونه‌ای از یک تصویر کوچک در قالب متنی PBM آورده شده است: .nf 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 .fi .PP یک نویسه سطر جدید در انتهای هر یک از این خطوط وجود دارد\&. .PP شما می‌توانید قالب Plain PBM را از قالب استاندارد PBM (فقط تصویر نخست در فایل) با برنامه \fBpnmtoplainpnm\fP تولید کنید\&. .PP برنامه‌هایی که این قالب را می‌خوانند باید تا حد امکان آسان‌گیر باشند و هر داده‌ای را که اندکی شبیه به یک بیت‌مپ است بپذیرند\&. .UN internetmediatype .SH "نوع رسانه اینترنتی (INTERNET MEDIA TYPE)" .PP هیچ نوع رسانه اینترنتی (MIME type، نوع محتوا) برای PBM در IANA ثبت نشده است، اما مقدار \f(CWimage/x-portable-bitmap\fP به صورت سنتی به کار می‌رود\&. .PP توجه داشته باشید که نوع رسانه اینترنتی PNM به صورت \f(CWimage/x-portable-anymap\fP نیز برای آن صدق می‌کند\&. .UN filename .SH "نام فایل (FILE NAME)" .PP هیچ الزامی در نام‌گذاری یک فایل PBM وجود ندارد، اما بر اساس عرف از پسوند ".pbm" استفاده می‌شود\&. همچنین پسوند "pnm" نیز در مواردی که تمایز میان زیرقالب‌های خاص PNM لزومی ندارد، مرسوم است\&. .UN compatibility .SH "سازگاری (COMPATIBILITY)" .PP پیش از ژوئیه ۲۰۰۰، حداکثر یک تصویر می‌توانست در یک فایل PBM وجود داشته باشد\&. در نتیجه، بیشتر ابزارهای پردازش فایل‌های PBM هرگونه داده بعد از تصویر نخست را نادیده گرفته و نمی‌خوانند\&. .UN seealso .SH "همچنین ببینید (SEE ALSO)" .BR "libnetpbm" (1)\c \&, .BR "pnm" (1)\c \&, .BR "pgm" (1)\c \&, .BR "ppm" (1)\c \&, .BR "pam" (1)\c \&, .BR "programs that process PBM" (1)\c \& .SH "منبع سند (DOCUMENT SOURCE)" این صفحه راهنما توسط ابزار 'makeman' متعلق به Netpbm از منبع HTML تولید شده است\&. مستندات اصلی در نشانی زیر قرار دارد: .IP .B http://netpbm.sourceforge.net/doc/pbm.html .PP