| Pamundice User Manual(0) | Pamundice User Manual(0) |
نام (NAME)
pamundice - ترکیب شبکهای از تصاویر (کاشیها) در یک تصویر واحد
مثالها (EXAMPLES)
$ pamdice myimage.ppm -outstem=myimage_part -width=1000 -height=1000 $ pamundice myimage_part_%1d_%1a.ppm -across=10 -down=8 >myimage.ppm $ pamundice myimage_part_%2a -across=13 -hoverlap=9
برای مثالهای بیشتر به pamdice مراجعه کنید.
خلاصه دستور (SYNOPSIS)
pamundice
{ [-across=n]
[-down=n] , -indexfile=pamfilename }
[-hoverlap=pixels]
[-voverlap=pixels]
[-verbose]
{input_filename_pattern, -listfile=textfilename}
میتوانید از کوتاهترین مخفف یکتای گزینهها استفاده کنید. میتوانید به جای یک خط تیره از دو خط تیره استفاده نمایید. همچنین میتوانید نام گزینه را به جای علامت مساوی با فاصله از مقدار آن جدا کنید.
توضیحات (DESCRIPTION)
این برنامه بخشی از Netpbm(1) است.
pamundice دستهای از تصاویر Netpbm را به عنوان ورودی خوانده و آنها را به صورت شبکهای از کاشیها در قالب یک تصویر خروجی واحد از همان نوع در خروجی استاندارد ترکیب میکند.
به صورت اختیاری میتوانید کاری کنید که قطعات با یکدیگر همپوشانی داشته باشند.
قطعات لزوماً نباید متمایز باشند؛ میتوانید کاری کنید که یک تصویر ورودی واحد در چندین نقطه از شبکهٔ خروجی ظاهر شود.
تصاویر میتوانند در فایلهایی باشند که نام آنها محل قرارگیریشان را در خروجی مشخص میکند (مثلاً 'myimage_part_03_04' میتواند تصویر سطر ۳، ستون ۴ باشد - آرگومان input_filename_pattern را ببینید) یا اینکه با گزینهٔ -listfile در یک فایل متنی فهرست شده باشند.
همهٔ تصاویر ورودی باید دارای قالب یکسان (PAM، PPM و غیره) و مقدار maxval یکسان باشند و در مورد PAM باید عمق (depth) و نوع چندتایی (tuple type) یکسانی داشته باشند. تمام تصاویر در یک ردیف (سطر افقی از کاشیها) باید ارتفاع یکسانی داشته باشند. تمام تصاویر در یک ستون (ستون عمودی از کاشیها) باید پهنای یکسانی داشته باشند. اما الزامی نیست که همهٔ ردیفها ارتفاع یکسان یا همهٔ ستونها پهنای یکسانی داشته باشند.
دستور pamdice معکوس pamundice است. میتوانید از pamundice برای اتصال مجدد تصویری که توسط pamdice تکهتکه شده استفاده کنید. همچنین میتوانید از pamdice برای ایجاد مجدد کاشیهای تصویری که توسط pamundice ساخته شده استفاده کنید، اما برای این کار، همهٔ ردیفهای اصلی به جز ردیف انتهایی باید ارتفاع یکسانی داشته باشند و همهٔ ستونهای اصلی به جز ستون سمت راست باید دارای پهنای یکسانی باشند.
یکی از کاربردهای این برنامه، پردازش تکهتکهای تصویر در شرایطی است که کل تصویر برای پردازش بیش از حد بزرگ باشد. به عنوان مثال، ممکن است تصویری چنان حجیم داشته باشید که ویرایشگر تصویر نتواند تمام آن را در حافظه بارگذاری کند یا آن را بسیار کند پردازش کند. میتوانید آن را با pamdice به قطعات کوچکتر تقسیم کرده، هر بار یک قطعه را ویرایش نمایید و سپس با pamundice دوباره آنها را سرهم کنید.
البته، میتوانید از pamundice برای ساخت انواع تصاویر شطرنجی نیز استفاده کنید؛ مثلاً میتوانید برنامهای بنویسید که تصویر هر خانه از صفحه شطرنج را محاسبه و رندر کرده، سپس با استفاده از pamundice آنها را در قالب یک صفحهٔ کامل سرهم کند.
روشی جایگزین برای متصل کردن تصاویر در یک جهت واحد (یعنی یک ردیف واحد یا یک ستون واحد)، استفاده از pamcat است. ابزار pamcat روشهای متفاوتی را برای تعیین تصاویر ورودی ارائه میدهد: میتوانید آنها را به صورت متوالی در ورودی استاندارد فراهم کنید یا نام آنها را به عنوان آرگومانهای خط فرمان فهرست نمایید.
برای پیوستن عکسهای تکهتکه، به جای pamundice از pnmstitch استفاده کنید؛ زیرا محل همپوشانی قطعات را حتی در صورتی که دقیقاً به صورت عمودی یا افقی منطبق نباشند، تشخیص میدهد.
برای ایجاد تصویری حاصل از تکرار یک کاشی یکسان در یک شبکه، از pnmtile استفاده کنید.
دستور pnmindex کاری شبیه به pamundice انجام میدهد: دستهای از تصاویر کوچک را در یک شبکه ترکیب کرده و به یک تصویر بزرگ تبدیل میکند. اما هدف آن تولید یک تصویر شاخص (نمایه) از تصاویر ورودی است؛ بنابراین به عنوان مثال، بین آنها فاصله قرار میدهد و برای آنها برچسب میگذارد.
مگر اینکه از گزینه -listfile استفاده کنید، یک آرگومان غیرگزینهای وجود دارد که اجباری است: input_filename_pattern. این آرگومان به pamundice میگوید چه فایلهایی حاوی کاشیهای ورودی هستند.
برنامه pamundice تصاویر ورودی را از فایلهایی میخواند که نامگذاری آنها بر اساس الگویی است که موقعیت آنها را در تصویر ترکیبشده مشخص میکند. برای مثال، tile_00_05.ppm میتواند ششمین کاشی به سمت راست در ردیف اول باشد، در حالی که tile_04_01 دومین کاشی در ردیف پنجم است.
(اما گزینه -indexfile را ببینید، که میتواند باعث بازآرایی کاشیها شود به گونهای که فایلی که نام آن نشاندهنده ششمین کاشی در ردیف اول است، در عمل توسط pamundice در هر موقعیت دلخواهی در خروجی قرار گیرد).
شما نمیتوانید هیچیک از دادهها را از ورودی استاندارد (Standard Input) تأمین کنید، و فایلها باید از نوعی باشند که pamundice بتواند آنها را ببندد، دوباره باز کند و همان تصویر را برای بار دوم بخواند (به عنوان مثال، یک فایل معمولی مناسب است؛ اما یک لوله نامگذاریشده (named pipe) احتمالاً مناسب نیست).
الگوی input_filename_pattern یک الگوی به سبک printf است. (تابع استاندارد printf در کتابخانه C را ببینید). برای مثال بالا، این الگو tile_%2d_%2a.ppm خواهد بود. تنها مشخصکنندههای تبدیلِ مجاز عبارتند از:
- d
- «down» (پایین): شماره ردیف (سطر)، که از 0 شروع میشود.
- a
- «across» (افقی): شماره ستون (file)، که از 0 شروع میشود.
- %
- نویسه درصد (%).
عدد بین % و مشخصکننده تبدیل، دقت (precision) است و الزامی میباشد. این عدد مشخص میکند که چند نویسه از نام فایل توسط آن تبدیل توصیف میشود. شماره ردیف یا ستون در صورت لزوم با صفرهای ابتدایی پر میشود.
بنابراین مثال tile_%2d_%2a.ppm به این معناست که برای به دست آوردن نام فایلی که حاوی کاشی در ردیف 0 و ستون 5 است، شما:
- مقدار «%2d» را با شماره ردیف، به صورت یک عدد دهدهی ۲ رقمی جایگزین کنید: «00»
- مقدار «%2a» را با شماره ستون، به صورت یک عدد دهدهی ۲ رقمی جایگزین کنید: «05»
توجه داشته باشید که این الگوی خاص، نام فایلهایی را توصیف میکند که pamdice تولید میکند، به جز اینکه ممکن است مقدار دقت کمتر یا بیشتر باشد. (گزینه -numberwidth در pamdice را ببینید).
توجه داشته باشید که الگویی بدون %d یا بدون %a باعث تکرار (replication) میشود.
گزینهها (OPTIONS)
علاوه بر گزینههای مشترک بین تمام برنامههای مبتنی بر libnetpbm (بهویژه -quiet، به گزینههای مشترک (Common Options) مراجعه کنید)، pamundice گزینههای خط فرمان زیر را میشناسد:
- -across=N
- تعداد
کاشیهای
افقی در
شبکه، یعنی
تعداد
کاشیها در
هر ردیف، یا
تعداد
ستونها.
نمیتوانید این گزینه را همراه با -indexfile مشخص کنید.
پیشفرض 1 است.
- -down=N
- تعداد
کاشیهای
عمودی در
شبکه، یعنی
تعداد
کاشیها در
هر ستون، یا
تعداد
ردیفها.
نمیتوانید این گزینه را همراه با -indexfile مشخص کنید.
پیشفرض 1 است.
- -hoverlap=pixels
- مقدار
همپوشانی
افقی
کاشیها بر
حسب پیکسل
است. pamundice پیش
از متصل
کردن هر
کاشی به
تصویر
مجاور در
سمت راست،
این مقدار
را از لبه
راست آن برش
میدهد.
کاشیهای
لبه سمت
راست
دستنخورده
باقی
میمانند.
هیچ تصویر ورودی نباید باریکتر از این مقدار باشد.
توجه داشته باشید که این کار، اثر همان گزینه -hoverlap در pamdice را خنثی میکند.
پیشفرض صفر است – بدون همپوشانی.
- -voverlap=pixels
- مشابه با -hoverlap است، با این تفاوت که pamundice لبه پایینی هر تصویر را پیش از متصل کردن به تصویر پایینی آن برش میدهد.
- -listfile=textfilename
- این گزینه
فایلی را
مشخص
میکند که
شامل نام
تمام
فایلهای
ورودی است.
این یک روش
جایگزین
برای مشخص
کردن الگوی
نام فایل به
عنوان
آرگومان
است.
فایل نامبرده شامل نامهای فایل است، در هر خط یک نام. هر فایل حاوی تصویر یک کاشی با ترتیب سطر-محور (row-major order)، از بالا به پایین و از چپ به راست است. بنابراین نخستین فایل کاشی بالا سمت چپ، دومین فایل کاشی سمت راست آن و به همین ترتیب خواهد بود. تعداد خطوط این فایل باید برابر با تعداد کاشیهای خروجی، یعنی حاصلضرب مقادیر -across و -down باشد.
نام فایلها برای pamundice معنای خاصی ندارند. میتوانید یک فایل یکسان را چندین بار در فهرست قرار دهید تا کاشیهای یکسانی در خروجی داشته باشید.
اگر فایلهای کاشی را با pamdice ایجاد کردهاید، میتوانید از گزینه -listfile در pamdice برای تولید یک فایل فهرست مناسب جهت سرهمبندی مجدد کاشیها در همان موقعیتهای تصویر بزرگ اولیه استفاده کنید.
نمیتوانید این گزینه را همراه با -indexfile مشخص کنید.
این گزینه از Netpbm 10.90 (مارس ۲۰۲۰) اضافه شده است.
- -indexfile=pamfilename
- این گزینه
نام فایلی
حاوی یک
تصویر PAM را
مشخص
میکند که
تعیین
میکند
کدام
فایلهای
کاشی در چه
مکانی از
خروجی
مونتاژشده
قرار گیرند.
برای
جزئیات
مربوط به
قالب آن،
گزینه -indexfile
در pamdice را
ببینید.
روش معمول برای ایجاد یک تصویر شاخص جهت استفاده در pamundice، استفاده از گزینه -indexfile در pamdice و سپس در صورت نیاز، دستکاری تصویر شاخص حاصل با سایر ابزارهای Netpbm است.
در حالی که مقادیر نمونه در تصویر شاخص به عنوان موقعیتهای ردیف و ستون در یک تصویر بزرگ اولیه تعریف شدهاند و در مستندات نیز با همین اصطلاحات شرح داده میشوند، در عمل pamundice هیچ معنایی برای این اعداد قائل نمیشود – آنها صرفاً جایگزینهایی برای دو متغیر در الگوی نام فایل ورودی (که به عنوان آرگومان برنامه داده شده) هستند.
مقدار maxval در تصویر شاخص اهمیتی ندارد، جز اینکه هیچ نمونهای در تصویر شاخص نمیتواند از آن بزرگتر باشد.
عمق (depth) فایل شاخص باید حداقل دو (ردیف و ستون) باشد، اما برنامه صفحههای (planes) اضافی را نادیده میگیرد.
برنامه نوع چندتایی (tuple type) را نادیده میگیرد.
اگر این گزینه را مشخص نکنید، موقعیت یک کاشی در خروجی مستقیماً بر اساس بخشهای ردیف و ستون در نام فایل کاشی تعیین میشود، یا در صورت تعیین -listfile، بر اساس ترتیبی که فایلهای کاشی در فایل فهرست درج شدهاند مشخص میگردد.
نمیتوانید این گزینه را همراه با -listfile، -down یا -across مشخص کنید.
این گزینه از Netpbm 11.10 (مارس ۲۰۲۵) اضافه شده است.
- -verbose
- اطلاعات مربوط به پردازش را در خطای استاندارد (Standard Error) چاپ میکند.
در اینجا مثالی از استفاده از یک فایل فهرست آورده شده است:
Example usage of -listfile: pamdice -width=100 -height=100 -outstem=img_part -listfile=listfile \ img.ppm pamundice -listfile=listfile -across=6 -down=4 > img_copy.ppm
توجه داشته باشید که در مثال بالا، باید به طریقی بدانید که ۶ فایل و ۴ ردیف از pamdice دریافت کردهاید و سپس گزینههای درست -across و -down را در pamundice مشخص کنید. یک اشتباه جزئی کل فرایند را خراب میکند. روش بهتر، استفاده از -indexfile است:
pamdice -width=100 -height=100 -outstem=img_part \ -numberwidth=3 -indexfile=index.pam img.pam pamundice -indexfile=index.pam img_part_%3d_%3a.pam > img_copy.pam
در اینجا مثالی از چرخاندن/وارونه کردن یک تصویر بزرگ آورده شده است. pamflip اغلب نیازمند آن است که تمام تصویر بهطور همزمان در حافظهٔ اصلی قرار گیرد، که ممکن است برای تصاویری با اندازهٔ بسیار بزرگ غیرممکن یا غیرعملی باشد. این روش کار را در قطعات کوچکتر انجام میدهد تا حافظهٔ کمتری نیاز باشد:
Example of -indexfile with pamflip operation: pamdice -width=2500 -height=2500 -outstem=tile \ -numberwidth=3 -indexfile=index.pam hugeImage.ppm # flip every tile for tile in tile_???_???.ppm do pamflip -r180 $tile > ${tile%.ppm}.flipped.ppm done # flip indexfile - Simply apply the same flip operation pamflip -r180 index.pam > index_flipped.pam pamundice -indexfile=index_flipped.pam tile_%3d_%3a.flipped.ppm \ > hugeImage_flipped.ppm
تاریخچه (HISTORY)
دستور pamundice در Netpbm نسخهٔ 10.39 (ژوئن ۲۰۰۷) معرفی شد. پیش از آن، pamcat بهترین جایگزین بود.
همچنین ببینید (SEE ALSO)
pamdice(1), pamcat(1), pnmindex(1), pnmtile(1), pnmtile(1), pnm(1), pam(1).SH "منبع سند (DOCUMENT SOURCE)" این صفحهٔ راهنما توسط ابزار Netpbm بهنام 'makeman' از منبع HTML تولید شده است. مستندات مرجع در نشانی زیر قرار دارد:
| 02 January 2026 | netpbm documentation |