Pnmpad User Manual(0) Pnmpad User Manual(0)

pnmpad - افزودن حاشیه و پدینگ به اطراف تصویر Netpbm

pnmpad [-color=color [-promote={none|format|all}] |-detect-background |-extend-edge |-white |-black ] [-width=pixels] [-halign=ratio] [-mwidth=pixels] [-left=pixels] [-right=pixels] [-height=pixels] [-valign=ratio] [-mheight=pixels] [-top=pixels] [-bottom=pixels] [-reportonly] [-verbose] [pnmfile]

این برنامه بخشی از Netpbm(1) است.

دستور pnmpad یک تصویر Netpbm را به عنوان ورودی می‌خواند و یک تصویر PNM در خروجی تولید می‌کند که همان تصویر ورودی به همراه حاشیه‌هایی با رنگ و اندازه‌های مشخص‌شده است.

می‌توانید از pamcomp برای افزودن حاشیه‌هایی با هر نوع محتوایی - رنگ یکدست، الگو یا هر چیز دیگر - استفاده کنید. برای مثال اگر می‌خواهید ۱۰ پیکسل حاشیه رنگین‌کمانی به بالا و پایین یک تصویر ۱۰۰x۱۰۰ اضافه کنید، می‌توانید یک تصویر رنگین‌کمانی ۱۰۰x۱۲۰ بسازید (مثلاً با ppmrainbow) و سپس از pamcomp برای قرار دادن تصویر ۱۰۰x۱۰۰ خود در مرکز آن استفاده کنید.

علاوه بر گزینه‌های مشترک میان تمام برنامه‌های مبتنی بر libnetpbm (به‌ویژه -quiet، به گزینه‌های مشترک مراجعه کنید)، pnmpad گزینه‌های خط فرمان زیر را می‌شناسد:

تمام گزینه‌ها را می‌توان به کوتاه‌ترین پیشوند یکتای آن‌ها خلاصه کرد. می‌توانید به جای یک خط تیره از دو خط تیره برای تعیین گزینه استفاده کنید. همچنین می‌توانید بین نام گزینه و مقدار آن از فاصله یا علامت مساوی استفاده نمایید.

این گزینه رنگ پدینگ را مشخص می‌کند. color مشابه آرگومان در روتین کتابخانه‌ای pnm_parsecolor() است.

گزینه -detect-background به این معنی است که برنامه از رنگ پیکسل گوشه بالا-چپ ورودی به عنوان رنگ پدینگ استفاده می‌کند. توجه داشته باشید که اگر بالا یا سمت چپ تصویر را پدینگ نکنید، این کار ممکن است نتایج نامتعارفی ایجاد کند.

تنها می‌توانید یکی از گزینه‌های -white، -black، -color و -detect-background را مشخص کنید.

گزینه -extend-edge بیان می‌کند که پدینگ با تکثیر پیکسل‌به‌پیکسل لبه مجاور تصویر انجام شود. به عنوان مثال اگر ردیف بالای تصویر شامل ۲۰ پیکسل سفید و به دنبال آن ۱۰ پیکسل سیاه باشد، هر ردیف پدینگ اضافه‌شده به بالای تصویر نیز ۲۰ پیکسل سفید و سپس ۲۰ پیکسل سیاه خواهد بود.

به طور پیش‌فرض، پدینگ سیاه است.

گزینه‌های -white و -black برای سازگاری با نسخه‌های پیشین هستند؛ آن‌ها دقیقاً همان کار -color=white و -color=black را انجام می‌دهند (با این تفاوت که اگر دیکشنری رنگ در محیط شما تنظیم نشده باشد، این دو مورد با خطا مواجه می‌شوند، بنابراین بیشتر شبیه به -color=rgbi:0/0/0 و -color=rgbi:1/1/1 عمل می‌کنند). گزینه‌های -color، -detect-background و -extend-edge در Netpbm 11.05 (دسامبر ۲۰۲۳) معرفی شدند.

میزان پدینگ سمت چپ و راست را بر حسب پیکسل مشخص می‌کنند.

گزینه‌های -left و -right مستقیماً میزان پدینگ اضافه‌شده به ترتیب به سمت چپ و راست تصویر را مشخص می‌کنند.

در روشی دیگر، می‌توانید -width و تنها یکی از گزینه‌های -left یا -right را مشخص کنید تا pnmpad پدینگ مورد نیاز برای سمت دیگر را محاسبه کند تا عرض خروجی برابر با width پیکسل شود. اگر مقدار -width کمتر از عرض تصویر ورودی به همراه پدینگ مشخص‌شده باشد، pnmpad گزینه -width را نادیده می‌گیرد.

اگر هر سه گزینه -width، -left و -right را مشخص کنید، باید اطمینان حاصل کنید که پدینگ‌های -left و -right برای اینکه عرض تصویر حداقل به اندازه مشخص‌شده توسط -width شود کافی هستند؛ در این حالت -width هیچ تاثیری بر خروجی نخواهد داشت. در غیر این صورت، pnmpad با شکست مواجه می‌شود.

هنگامی که -width را بدون -left یا -right مشخص کنید و مقدار -width بزرگتر از تصویر ورودی باشد، pnmpad مقادیر پدینگ چپ و راست را بر اساس یک نسبت مشخص تعیین می‌کند. این نسبت به طور پیش‌فرض ۰.۵ (نصف) است، اما می‌توانید با گزینه -halign آن را روی هر مقداری (از ۰ تا ۱) تنظیم نمایید. اگر تصویر ورودی از قبل حداقل به پهنای مشخص‌شده در -width باشد، pnmpad هیچ پدینگی اضافه نمی‌کند.

مقادیر متداول برای -halign عبارتند از:

0.0
تراز به چپ
0.5
تراز به مرکز (پیش‌فرض)
1.0
تراز به راست

گزینه -mwidth=pixels بیان می‌کند که پدینگ تا رسیدن به مضربی از pixels پیکسل انجام شود. برای مثال اگر pixels برابر ۱۰ باشد، عرض تصویر خروجی مضربی از ۱۰ پیکسل خواهد بود. pnmpad این مقدار را به هر پدینگی که سایر گزینه‌ها تعیین کرده‌اند اضافه می‌کند تا به این مضرب برسد. همچنین این پدینگ را به گونه‌ای بین دو سمت چپ و راست تصویر تقسیم می‌کند که نسبت ایجادشده توسط سایر گزینه‌ها حفظ شود. برای مثال اگر با یک تصویر ۱۰۰ پیکسلی دستور -left=10 -right=10 -mwidth=50 را مشخص کنید، در نهایت تصویری ۱۵۰ پیکسلی خواهید داشت که پدینگ اضافی به طور مساوی بین چپ و راست تقسیم شده و در مجموع ۲۵ پیکسل پدینگ در سمت چپ و ۲۵ پیکسل در سمت راست اعمال می‌شود. اگر گزینه‌های دیگر هیچ پدینگی را مشخص نکرده باشند، pnmpad پدینگ را با نسبت مشخص‌شده توسط -halign و در صورتی که -halign مشخص نشده باشد، به طور مساوی در هر دو طرف اضافه می‌کند.

پیش از Netpbm 10.97 (دسامبر ۲۰۲۱)، pnmpad امکان استفاده از -halign همراه با -mwidth را نمی‌داد و زمانی که -mwidth مشخص بود و سایر گزینه‌ها هیچ پدینگی را نشان نمی‌دادند، پدینگ را تنها در سمت راست اعمال می‌کرد.

پیش از Netpbm 10.72 (سپتامبر ۲۰۱۵)، گزینه -mwidth وجود نداشت.

پیش از Netpbm 10.23 (ژوئیه ۲۰۰۴)، pnmpad اجازه استفاده از گزینه -left یا -right را همراه با -width نمی‌داد.

این گزینه‌ها پدینگ عمودی را تعیین می‌کنند. عملکرد آن‌ها کاملاً مشابه گزینه‌های پدینگ افقی در بالا است.
این گزینه مشخص می‌کند هنگامی که گزینه -color رنگی را تعیین می‌کند که در قالب ورودی (که معمولاً قالب خروجی نیز هست) قابل نمایش نیست، چه اقدامی انجام شود. به عنوان مثال اگر ورودی PGM باشد (که تنها قادر به نمایش سایه‌های خاکستری است) و شما -color=red را مشخص کنید، آیا pnmpad باید پدینگ را خاکستری کند یا قالب خروجی را به PPM ارتقا دهد؟

قالب خروجی و مقدار maxval را همانند ورودی حفظ می‌کند. رنگ پدینگ را به نزدیک‌ترین رنگ ممکن در آن قالب (سیاه، سفید یا سایه‌ای از خاکستری) تطبیق می‌دهد.

مقدار maxval خروجی را همانند ورودی نگه می‌دارد، اما در صورتی که رنگ پدینگ سیاه، سفید یا خاکستری نباشد، قالب خروجی را به PPM تبدیل می‌کند.

قالب و مقدار maxval خروجی را به گونه‌ای تنظیم می‌کند که قادر به نمایش رنگ پدینگ باشد. قالب خروجی را ساده‌ترین قالبی قرار می‌دهد که توانایی نمایش رنگ پدینگ را داشته باشد. همچنین maxval را برابر با مقدار بزرگ‌تر میان ۲۵۵ و maxval تصویر ورودی قرار می‌دهد.

حالت پیش‌فرض -promote=all است.

توجه داشته باشید که این ارتقا حتی در صورتی که هیچ پدینگ واقعی صورت نگیرد نیز اعمال می‌شود، به این معنی که عملاً ضروری نبوده است. این ارتقا بر اساس آنچه برای نمایش پدینگ با رنگ مشخص‌شده لازم خواهد بود صورت می‌گیرد.

این گزینه تنها زمانی معتبر است که گزینه -color را نیز مشخص کرده باشید.

این گزینه در Netpbm 11.05 (دسامبر ۲۰۲۳) اضافه شد.

باعث می‌شود pnmpad به جای تولید تصویر خروجی، توصیفی از پدینگی که انجام می‌داد را در خروجی استاندارد بنویسد. برای توضیحات این خروجی و روش‌های استفاده از آن، به بخش فقط گزارش در زیر مراجعه کنید.

این گزینه در Netpbm 10.89 (دسامبر ۲۰۱۹) اضافه شد.

پیام‌های پرجزئیات را نمایش می‌دهد.

هنگامی که گزینه -reportonly را مشخص می‌کنید، pnmpad تصویر خروجی تولید نمی‌کند. در عوض، توصیفی از پدینگی که بدون -reportonly انجام می‌داد را در خروجی استاندارد می‌نویسد.

آن توصیف یک خط متنی شامل ۶ عدد ده‌دهی از تعداد پیکسل‌ها است که با فاصله از هم جدا شده‌اند:

  • پدینگ سمت چپ
  • پدینگ سمت راست
  • پدینگ بالا
  • پدینگ پایین
  • عرض خروجی
  • ارتفاع خروجی

مثال:

<span style="font-family: monospace">
  4 3 0 2 100 100
</span>

یکی از کاربردهای این ویژگی، ایجاد پدینگ‌های پیشرفته‌تر از حالت سیاه و سفیدی است که pnmpad به تنهایی قادر به انجام آن است.

در مثال زیر، دور تا دور تصویر را با ۱۰ پیکسل خاکستری پدینگ می‌کنیم، بدون اینکه ابعاد تصویر اصلی را از قبل بدانیم. ما این کار را با تولید یک تصویر خاکستری به وسیله pbmmake و سپس چسباندن تصویر اصلی در وسط آن با pnmpaste انجام می‌دهیم.

این مثال از آرایه‌های شل استفاده می‌کند که در Bash وجود دارند، اما در Dash موجود نیستند.

    
    pad=($(pnmpad -reportonly -left=10 -right=10 -top=10 -bottom=10 input.ppm))
    pbmmake -gray ${pad[4]} ${pad[5]} | \
      pnmpaste input.ppm ${pad[0]} ${pad[2]} -
    

ساختار خط فرمان در ابتدا بیشتر شبیه به ساختار سنتی یونیکس بود، با گزینه‌های تک‌کاراکتری اندازه حاشیه شامل -l، -r، -t و -b که آرگومان‌ها را متصل به نام گزینه دریافت می‌کردند، مانند -l50. این در تضاد با ساختار مدرن‌تری است که اساساً توسط تمام برنامه‌های Netpbm استفاده می‌شود، که در آن گزینه‌ای مانند -left (که همچنان می‌تواند به صورت -l خلاصه شود) باید نام و مقدار خود را به صورت آرگومان‌های مجزای خط فرمان داشته باشد (مانند -l 50).

ساختار جدید در Netpbm 9.25 (مارس ۲۰۰۲) پذیرفته شد و ساختار قدیمی منسوخ و از مستندات حذف گردید، و در نهایت از Netpbm 11.05 (دسامبر ۲۰۲۳) به بعد دیگر پذیرفته نشد.

کد برنامه در بیشتر آن دوران دچار نقص بود به طوری که تلاش برای استفاده از ساختار قدیمی در هر صورت با شکست مواجه می‌شد. این باگ تنها در طول آزمایش کشف شد و هیچ کاربری تا کنون برخورد با آن را گزارش نکرده بود.

pbmmake(1), pnmpaste(1), pamcut(1), pnmcrop(1), pamcomp(1), pnmmargin(1), pbm(1)

حق نشر © ۲۰۰۲ متعلق به Martin van Beilen

حق نشر © ۱۹۹۰ متعلق به Angus Duggan

حق نشر © ۱۹۸۹ متعلق به Jef Poskanzer.

بدین‌وسیله مجوز استفاده، کپی، تغییر و توزیع این نرم‌افزار و مستندات آن برای هر هدفی و بدون دریافت هزینه اعطا می‌شود، مشروط بر اینکه اطلاعیه حق نشر فوق در تمام نسخه‌ها درج شود و هر دو اطلاعیه حق نشر و این اطلاعیه مجوز در مستندات پشتیبان ظاهر شوند. این نرم‌افزار «همان‌گونه که هست» و بدون هرگونه ضمانت صریح یا ضمنی ارائه می‌شود.

این صفحه راهنما توسط ابزار 'makeman' در Netpbm از منبع HTML تولید شده است. مستندات اصلی در

http://netpbm.sourceforge.net/doc/pnmpad.html
26 December 2025 netpbm documentation