\ .\" 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 "Pnmpad User Manual" 0 "26 December 2025" "netpbm documentation" .SH "نام (NAME)" pnmpad \- افزودن حاشیه و پدینگ به اطراف تصویر Netpbm .UN synopsis .SH "خلاصه دستور (SYNOPSIS)" \fBpnmpad\fP [\fB-color=\fP\fIcolor\fP [\fB-promote=\fP{\fBnone\fP|\fBformat\fP|\fBall\fP}] |\fB-detect-background\fP |\fB-extend-edge\fP |\fB-white\fP |\fB-black\fP ] [\fB-width=\fP\fIpixels\fP] [\fB-halign=\fP\fIratio\fP] [\fB-mwidth=\fP\fIpixels\fP] [\fB-left=\fP\fIpixels\fP] [\fB-right=\fP\fIpixels\fP] [\fB-height=\fP\fIpixels\fP] [\fB-valign=\fP\fIratio\fP] [\fB-mheight=\fP\fIpixels\fP] [\fB-top=\fP\fIpixels\fP] [\fB-bottom=\fP\fIpixels\fP] [\fB-reportonly\fP] [\fB-verbose\fP] [\fIpnmfile\fP] .UN description .SH "توضیحات (DESCRIPTION)" .PP این برنامه بخشی از .BR "Netpbm" (1)\c \& است. .PP دستور \fBpnmpad\fP یک تصویر Netpbm را به عنوان ورودی می‌خواند و یک تصویر PNM در خروجی تولید می‌کند که همان تصویر ورودی به همراه حاشیه‌هایی با رنگ و اندازه‌های مشخص‌شده است. .PP می‌توانید از \fBpamcomp\fP برای افزودن حاشیه‌هایی با هر نوع محتوایی \- رنگ یکدست، الگو یا هر چیز دیگر \- استفاده کنید. برای مثال اگر می‌خواهید ۱۰ پیکسل حاشیه رنگین‌کمانی به بالا و پایین یک تصویر ۱۰۰x۱۰۰ اضافه کنید، می‌توانید یک تصویر رنگین‌کمانی ۱۰۰x۱۲۰ بسازید (مثلاً با \fBppmrainbow\fP) و سپس از \fBpamcomp\fP برای قرار دادن تصویر ۱۰۰x۱۰۰ خود در مرکز آن استفاده کنید. .UN options .SH "گزینه‌ها (OPTIONS)" .PP علاوه بر گزینه‌های مشترک میان تمام برنامه‌های مبتنی بر libnetpbm (به‌ویژه \fB-quiet\fP\c ، به .UR index.html#commonoptions گزینه‌های مشترک .UE مراجعه کنید)، \fBpnmpad\fP گزینه‌های خط فرمان زیر را می‌شناسد: .PP تمام گزینه‌ها را می‌توان به کوتاه‌ترین پیشوند یکتای آن‌ها خلاصه کرد. می‌توانید به جای یک خط تیره از دو خط تیره برای تعیین گزینه استفاده کنید. همچنین می‌توانید بین نام گزینه و مقدار آن از فاصله یا علامت مساوی استفاده نمایید. .TP \fB-color=\fP\fIcolor\fP .TP \fB-detect-background\fP .TP \fB-extend-edge\fP .TP \fB-white\fP .TP \fB-black\fP این گزینه رنگ پدینگ را مشخص می‌کند. \fIcolor\fP مشابه آرگومان .UR libnetpbm_image.html#colorname در روتین کتابخانه‌ای \fBpnm_parsecolor()\fP .UE است. .sp گزینه \fB-detect-background\fP به این معنی است که برنامه از رنگ پیکسل گوشه بالا-چپ ورودی به عنوان رنگ پدینگ استفاده می‌کند. توجه داشته باشید که اگر بالا یا سمت چپ تصویر را پدینگ نکنید، این کار ممکن است نتایج نامتعارفی ایجاد کند. .sp تنها می‌توانید یکی از گزینه‌های \fB-white\fP\c ، \fB-black\fP\c ، \fB-color\fP و \fB-detect-background\fP را مشخص کنید. .sp گزینه \fB-extend-edge\fP بیان می‌کند که پدینگ با تکثیر پیکسل‌به‌پیکسل لبه مجاور تصویر انجام شود. به عنوان مثال اگر ردیف بالای تصویر شامل ۲۰ پیکسل سفید و به دنبال آن ۱۰ پیکسل سیاه باشد، هر ردیف پدینگ اضافه‌شده به بالای تصویر نیز ۲۰ پیکسل سفید و سپس ۲۰ پیکسل سیاه خواهد بود. .sp به طور پیش‌فرض، پدینگ سیاه است. .sp گزینه‌های \fB-white\fP و \fB-black\fP برای سازگاری با نسخه‌های پیشین هستند؛ آن‌ها دقیقاً همان کار \fB-color=white\fP و \fB-color=black\fP را انجام می‌دهند (با این تفاوت که اگر دیکشنری رنگ در محیط شما تنظیم نشده باشد، این دو مورد با خطا مواجه می‌شوند، بنابراین بیشتر شبیه به \fB-color=rgbi:0/0/0\fP و \fB-color=rgbi:1/1/1\fP عمل می‌کنند). گزینه‌های \fB-color\fP\c ، \fB-detect-background\fP و \fB-extend-edge\fP در Netpbm 11.05 (دسامبر ۲۰۲۳) معرفی شدند. .TP \fB-left=\fP\fIpixels\fP .TP \fB-right=\fP\fIpixels\fP .TP \fB-width=\fP\fIwidth\fP .TP \fB-halign=\fP\fIratio\fP .TP \fB-mwidth=\fP\fIpixels\fP میزان پدینگ سمت چپ و راست را بر حسب پیکسل مشخص می‌کنند. .sp گزینه‌های \fB-left\fP و \fB-right\fP مستقیماً میزان پدینگ اضافه‌شده به ترتیب به سمت چپ و راست تصویر را مشخص می‌کنند. .sp در روشی دیگر، می‌توانید \fB-width\fP و تنها یکی از گزینه‌های \fB-left\fP یا \fB-right\fP را مشخص کنید تا \fBpnmpad\fP پدینگ مورد نیاز برای سمت دیگر را محاسبه کند تا عرض خروجی برابر با \fIwidth\fP پیکسل شود. اگر مقدار \fB-width\fP کمتر از عرض تصویر ورودی به همراه پدینگ مشخص‌شده باشد، \fBpnmpad\fP گزینه \fB-width\fP را نادیده می‌گیرد. .sp اگر هر سه گزینه \fB-width\fP\c ، \fB-left\fP و \fB-right\fP را مشخص کنید، باید اطمینان حاصل کنید که پدینگ‌های \fB-left\fP و \fB-right\fP برای اینکه عرض تصویر حداقل به اندازه مشخص‌شده توسط \fB-width\fP شود کافی هستند؛ در این حالت \fB-width\fP هیچ تاثیری بر خروجی نخواهد داشت. در غیر این صورت، \fBpnmpad\fP با شکست مواجه می‌شود. .sp هنگامی که \fB-width\fP را بدون \fB-left\fP یا \fB-right\fP مشخص کنید و مقدار \fB-width\fP بزرگتر از تصویر ورودی باشد، \fBpnmpad\fP مقادیر پدینگ چپ و راست را بر اساس یک نسبت مشخص تعیین می‌کند. این نسبت به طور پیش‌فرض ۰.۵ (نصف) است، اما می‌توانید با گزینه \fB-halign\fP آن را روی هر مقداری (از ۰ تا ۱) تنظیم نمایید. اگر تصویر ورودی از قبل حداقل به پهنای مشخص‌شده در \fB-width\fP باشد، \fBpnmpad\fP هیچ پدینگی اضافه نمی‌کند. .sp مقادیر متداول برای \fB-halign\fP عبارتند از: .TP \fB0.0\fP تراز به چپ .TP \fB0.5\fP تراز به مرکز (پیش‌فرض) .TP \fB1.0\fP تراز به راست .sp گزینه \fB-mwidth=\fP\fIpixels\fP بیان می‌کند که پدینگ تا رسیدن به مضربی از \fIpixels\fP پیکسل انجام شود. برای مثال اگر \fIpixels\fP برابر ۱۰ باشد، عرض تصویر خروجی مضربی از ۱۰ پیکسل خواهد بود. \fBpnmpad\fP این مقدار را به هر پدینگی که سایر گزینه‌ها تعیین کرده‌اند اضافه می‌کند تا به این مضرب برسد. همچنین این پدینگ را به گونه‌ای بین دو سمت چپ و راست تصویر تقسیم می‌کند که نسبت ایجادشده توسط سایر گزینه‌ها حفظ شود. برای مثال اگر با یک تصویر ۱۰۰ پیکسلی دستور \fB-left=10 -right=10 -mwidth=50\fP را مشخص کنید، در نهایت تصویری ۱۵۰ پیکسلی خواهید داشت که پدینگ اضافی به طور مساوی بین چپ و راست تقسیم شده و در مجموع ۲۵ پیکسل پدینگ در سمت چپ و ۲۵ پیکسل در سمت راست اعمال می‌شود. اگر گزینه‌های دیگر هیچ پدینگی را مشخص نکرده باشند، \fBpnmpad\fP پدینگ را با نسبت مشخص‌شده توسط \fB-halign\fP و در صورتی که \fB-halign\fP مشخص نشده باشد، به طور مساوی در هر دو طرف اضافه می‌کند. .sp پیش از Netpbm 10.97 (دسامبر ۲۰۲۱)، \fBpnmpad\fP امکان استفاده از \fB-halign\fP همراه با \fB-mwidth\fP را نمی‌داد و زمانی که \fB-mwidth\fP مشخص بود و سایر گزینه‌ها هیچ پدینگی را نشان نمی‌دادند، پدینگ را تنها در سمت راست اعمال می‌کرد. .sp پیش از Netpbm 10.72 (سپتامبر ۲۰۱۵)، گزینه \fB-mwidth\fP وجود نداشت. .sp پیش از Netpbm 10.23 (ژوئیه ۲۰۰۴)، \fBpnmpad\fP اجازه استفاده از گزینه \fB-left\fP یا \fB-right\fP را همراه با \fB-width\fP نمی‌داد. .TP \fB-top=\fP\fIpixels\fP .TP \fB-bottom=\fP\fIpixels\fP .TP \fB-height=\fP\fIheight\fP .TP \fB-valign=\fP\fIratio\fP .TP \fB-mheight=\fP\fIpixels\fP این گزینه‌ها پدینگ عمودی را تعیین می‌کنند. عملکرد آن‌ها کاملاً مشابه گزینه‌های پدینگ افقی در بالا است. .TP \fB-promote=\fP{\fBnone\fP|\fBformat\fP|\fBall\fP} این گزینه مشخص می‌کند هنگامی که گزینه \fB-color\fP رنگی را تعیین می‌کند که در قالب ورودی (که معمولاً قالب خروجی نیز هست) قابل نمایش نیست، چه اقدامی انجام شود. به عنوان مثال اگر ورودی PGM باشد (که تنها قادر به نمایش سایه‌های خاکستری است) و شما \fB-color=red\fP را مشخص کنید، آیا \fBpnmpad\fP باید پدینگ را خاکستری کند یا قالب خروجی را به PPM ارتقا دهد؟ .TP \fBnone\fP قالب خروجی و مقدار maxval را همانند ورودی حفظ می‌کند. رنگ پدینگ را به نزدیک‌ترین رنگ ممکن در آن قالب (سیاه، سفید یا سایه‌ای از خاکستری) تطبیق می‌دهد. .TP \fBformat\fP مقدار maxval خروجی را همانند ورودی نگه می‌دارد، اما در صورتی که رنگ پدینگ سیاه، سفید یا خاکستری نباشد، قالب خروجی را به PPM تبدیل می‌کند. .TP \fBall\fP قالب و مقدار maxval خروجی را به گونه‌ای تنظیم می‌کند که قادر به نمایش رنگ پدینگ باشد. قالب خروجی را ساده‌ترین قالبی قرار می‌دهد که توانایی نمایش رنگ پدینگ را داشته باشد. همچنین maxval را برابر با مقدار بزرگ‌تر میان ۲۵۵ و maxval تصویر ورودی قرار می‌دهد. .sp حالت پیش‌فرض \fB-promote=all\fP است. .sp توجه داشته باشید که این ارتقا حتی در صورتی که هیچ پدینگ واقعی صورت نگیرد نیز اعمال می‌شود، به این معنی که عملاً ضروری نبوده است. این ارتقا بر اساس آنچه برای نمایش پدینگ با رنگ مشخص‌شده \fIلازم خواهد بود\fP صورت می‌گیرد. .sp این گزینه تنها زمانی معتبر است که گزینه \fB-color\fP را نیز مشخص کرده باشید. .sp این گزینه در Netpbm 11.05 (دسامبر ۲۰۲۳) اضافه شد. .TP \fB-reportonly\fP باعث می‌شود \fBpnmpad\fP به جای تولید تصویر خروجی، توصیفی از پدینگی که انجام می‌داد را در خروجی استاندارد بنویسد. برای توضیحات این خروجی و روش‌های استفاده از آن، به بخش .UR #reportonly فقط گزارش .UE در زیر مراجعه کنید. .sp این گزینه در Netpbm 10.89 (دسامبر ۲۰۱۹) اضافه شد. .TP \fB-verbose\fP پیام‌های پرجزئیات را نمایش می‌دهد. .UN reportonly .SH "فقط گزارش (REPORT ONLY)" .PP هنگامی که گزینه \fB-reportonly\fP را مشخص می‌کنید، \fBpnmpad\fP تصویر خروجی تولید نمی‌کند. در عوض، توصیفی از پدینگی که بدون \fB-reportonly\fP انجام می‌داد را در خروجی استاندارد می‌نویسد. .PP آن توصیف یک خط متنی شامل ۶ عدد ده‌دهی از تعداد پیکسل‌ها است که با فاصله از هم جدا شده‌اند: .IP \(bu پدینگ سمت چپ .IP \(bu پدینگ سمت راست .IP \(bu پدینگ بالا .IP \(bu پدینگ پایین .IP \(bu عرض خروجی .IP \(bu ارتفاع خروجی .PP مثال: .nf 4 3 0 2 100 100 .fi .PP یکی از کاربردهای این ویژگی، ایجاد پدینگ‌های پیشرفته‌تر از حالت سیاه و سفیدی است که \fBpnmpad\fP به تنهایی قادر به انجام آن است. .PP در مثال زیر، دور تا دور تصویر را با ۱۰ پیکسل خاکستری پدینگ می‌کنیم، بدون اینکه ابعاد تصویر اصلی را از قبل بدانیم. ما این کار را با تولید یک تصویر خاکستری به وسیله \fBpbmmake\fP و سپس چسباندن تصویر اصلی در وسط آن با \fBpnmpaste\fP انجام می‌دهیم. .PP این مثال از آرایه‌های شل استفاده می‌کند که در Bash وجود دارند، اما در Dash موجود نیستند. .nf \f(CW pad=($(pnmpad -reportonly -left=10 -right=10 -top=10 -bottom=10 input.ppm)) pbmmake -gray ${pad[4]} ${pad[5]} | \e pnmpaste input.ppm ${pad[0]} ${pad[2]} - \fP .fi .UN history .SH "تاریخچه (HISTORY)" .PP ساختار خط فرمان در ابتدا بیشتر شبیه به ساختار سنتی یونیکس بود، با گزینه‌های تک‌کاراکتری اندازه حاشیه شامل \fB-l\fP\c ، \fB-r\fP\c ، \fB-t\fP و \fB-b\fP که آرگومان‌ها را متصل به نام گزینه دریافت می‌کردند، مانند \fB-l50\fP\c \&. این در تضاد با ساختار مدرن‌تری است که اساساً توسط تمام برنامه‌های Netpbm استفاده می‌شود، که در آن گزینه‌ای مانند \fB-left\fP (که همچنان می‌تواند به صورت \fB-l\fP خلاصه شود) باید نام و مقدار خود را به صورت آرگومان‌های مجزای خط فرمان داشته باشد (مانند \fB-l 50\fP\c \&). .PP ساختار جدید در Netpbm 9.25 (مارس ۲۰۰۲) پذیرفته شد و ساختار قدیمی منسوخ و از مستندات حذف گردید، و در نهایت از Netpbm 11.05 (دسامبر ۲۰۲۳) به بعد دیگر پذیرفته نشد. .PP کد برنامه در بیشتر آن دوران دچار نقص بود به طوری که تلاش برای استفاده از ساختار قدیمی در هر صورت با شکست مواجه می‌شد. این باگ تنها در طول آزمایش کشف شد و هیچ کاربری تا کنون برخورد با آن را گزارش نکرده بود. .UN seealso .SH "همچنین ببینید (SEE ALSO)" .BR "pbmmake" (1)\c \&, .BR "pnmpaste" (1)\c \&, .BR "pamcut" (1)\c \&, .BR "pnmcrop" (1)\c \&, .BR "pamcomp" (1)\c \&, .BR "pnmmargin" (1)\c \&, .BR "pbm" (1)\c \& .UN author .SH "نویسندگان (AUTHORS)" .PP حق نشر \(co ۲۰۰۲ متعلق به Martin van Beilen .PP حق نشر \(co ۱۹۹۰ متعلق به Angus Duggan .PP حق نشر \(co ۱۹۸۹ متعلق به Jef Poskanzer. .PP بدین‌وسیله مجوز استفاده، کپی، تغییر و توزیع این نرم‌افزار و مستندات آن برای هر هدفی و بدون دریافت هزینه اعطا می‌شود، مشروط بر اینکه اطلاعیه حق نشر فوق در تمام نسخه‌ها درج شود و هر دو اطلاعیه حق نشر و این اطلاعیه مجوز در مستندات پشتیبان ظاهر شوند. این نرم‌افزار «همان‌گونه که هست» و بدون هرگونه ضمانت صریح یا ضمنی ارائه می‌شود. .SH "منبع سند (DOCUMENT SOURCE)" این صفحه راهنما توسط ابزار 'makeman' در Netpbm از منبع HTML تولید شده است. مستندات اصلی در .IP .B http://netpbm.sourceforge.net/doc/pnmpad.html .PP