\ .\" 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 "Pamflip User Manual" 0 "02 June 2025" "netpbm documentation" .SH "نام (NAME)" pamflip \- وارون‌سازی یا چرخاندن یک تصویر PAM یا PNM .UN synopsis .SH "خلاصه دستور (SYNOPSIS)" \fBpamflip\fP { \fB-leftright\fP | \fB-lr\fP | \fB-topbottom\fP | \fB-tb\fP | \fB-transpose\fP | \fB-xy\fP | \fB-reflect\fP | \fB-rotate90\fP | \fB-r90\fP | \fB-cw\fP | \fB-rotate270\fP | \fB-r270\fP | \fB-ccw\fP | \fB-rotate180\fP | \fB-r180\fP | \fB-null\fP | \fB-xform=\fP\fIxform1\fP\fB,\fP\fIxform2\fP... } [\fB-inverse\fP] [\fB-memsize=\fP\fImebibytes\fP] [\fB-pagesize=\fP\fIbytes\fP] [\fIpamfile\fP] .PP تمام گزینه‌ها را می‌توان به کوتاه‌ترین پیشوند یکتای آن‌ها خلاصه کرد. می‌توانید به جای یک خط تیره از دو خط تیره برای تعیین یک گزینه استفاده کنید. همچنین می‌توانید بین نام یک گزینه و مقدار آن از نویسه فاصله یا علامت مساوی استفاده نمایید. .UN description .SH "توضیحات (DESCRIPTION)" .PP این برنامه بخشی از .BR "Netpbm" (1)\c \& است. .PP دستور \fBpamflip\fP یک تصویر PAM یا PNM را به صورت بالا به پایین یا چپ به راست وارون (flip) می‌کند، یا جای افقی و عمودی آن را ترانهاده (transpose) می‌سازد، یا آن را به اندازه ۱، ۲ یا ۳ ربع‌دایره (زاویه‌های ۹۰، ۱۸۰ یا ۲۷۰ درجه) می‌چرخاند. .PP برای چرخاندن در زاویه‌های دیگر، از \fBpnmrotate\fP استفاده کنید؛ هرچند سرعت آن بسیار کمتر است. .PP تصویر ورودی \fIpamfile\fP است، یا اگر \fIpamfile\fP مشخص نشده باشد، ورودی استاندارد (Standard Input) در نظر گرفته می‌شود. .PP برای وارون‌سازی یا چرخاندن بدون افت کیفیت یک تصویر JFIF (JPEG)، از \fBjpegtran\fP استفاده کنید. ابزار \fBjpegtran\fP بخشی از بستهٔ کتابخانهٔ فشرده‌سازی Independent Jpeg Group است و بخشی از Netpbm نیست. روش معمول Netpbm برای وارون‌سازی یک فایل JFIF این است که آن را به PNM تبدیل کرده، از \fBpamflip\fP استفاده شود و سپس دوباره به JFIF تبدیل گردد. اما از آن‌جا که فشرده‌سازی JPEG دارای اتلاف (lossy) است، تصویر حاصل کیفیتی کمتر از تصویر اصلی خواهد داشت. از سوی دیگر، \fBjpegtran\fP می‌تواند این تبدیل به‌خصوص را مستقیماً و بدون افت کیفیت روی داده‌های فشرده‌شده انجام دهد. .PP می‌توانید با استفاده از \fBpamdice\fP و \fBpamundice\fP در کنار \fBpamflip\fP، یک تصویر را به صورت قطعه‌قطعه وارون کنید. این کار ممکن است برای بهبود پردازش موازی یا بهینه‌سازی مصرف منابع مفید باشد. قابلیت تصویر شاخص (index image) در \fBpamdice\fP و \fBpamundice\fP به‌ویژه در این کار سودمند است، زیرا می‌توانید \fBpamflip\fP را روی تصویر شاخص اعمال کنید. یک مثال از وارون‌سازی تکه‌تکه‌ای یک تصویر با استفاده از تصویر شاخص، در راهنمای \fBpamundice\fP آورده شده است. .UN options .SH "گزینه‌ها (OPTIONS)" .PP علاوه بر گزینه‌های مشترک در تمام برنامه‌های مبتنی بر libnetpbm (به‌ویژه \fB-quiet\fP، به .UR index.html#commonoptions گزینه‌های مشترک .UE \& مراجعه کنید)، \fBpamflip\fP گزینه‌های خط فرمان زیر را می‌شناسد: .UN transformation.SS مشخص کردن تبدیل (Specifying the Transformation) .PP باید دقیقاً یکی از گزینه‌های زیر را مشخص کنید: .PP پیش‌درآمد \fBpamflip\fP (پیش از Netpbm 10.7 \- اوت ۲۰۰۲)، یعنی \fBpnmflip\fP، فاقد گزینهٔ \fB-xform\fP بود و در عوض به شما اجازه می‌داد هر تعداد از گزینه‌های دیگر، از جمله صفر مورد را مشخص کنید. این ابزار تمام تبدیل‌های указаن‌شده را دقیقاً همانند گزینهٔ \fB-xform\fP در \fBpamflip\fP به همان ترتیب ارائه‌شده اعمال می‌کرد. (دلیل این تغییر: این شیوه از تفسیر گزینه‌ها با بقیهٔ ابزارهای Netpbm و بیشتر دنیای Unix ناسازگار بود و در نتیجه فهم و پیاده‌سازی آن را دشوار می‌نمود). .TP \fB-leftright\fP .TP \fB-lr\fP معکوس کردن چپ با راست (آینه‌ای افقی). .TP \fB-topbottom\fP .TP \fB-tb\fP معکوس کردن بالا با پایین (وارونه عمودی). .TP \fB-transpose\fP .TP \fB-xy\fP ترانهادن سطرها با ستون‌ها؛ یعنی پیکسلی که در سطر X و ستون Y قرار دارد به سطر Y و ستون X منتقل می‌شود. (توجه داشته باشید که این‌ها مختصات دکارتی X و Y نیستند؛ مختصات دکارتی Y با حرکت به سمت بالا افزایش می‌یابد، در حالی که شماره‌های سطر با حرکت به سمت پایین افزایش پیدا می‌کنند). .TP \fB-reflect\fP بازتاب تصویر نسبت به (چرخش آن حول) یک خط مورب با شیب صعودی به سمت راست. این گزینه مکمل \fB-transpose\fP است که در عمل تصویر را نسبت به خطی با شیب نزولی به سمت راست بازتاب می‌دهد. این گزینه در Netpbm 11.11 (ژوئن ۲۰۲۵) اضافه شد. پیش از آن، می‌توانید از \fB-xform\fP برای دستیابی به این تبدیل استفاده کنید. .TP \fB-rotate90\fP .TP \fB-r90\fP .TP \fB-ccw\fP چرخش ۹۰ درجه در جهت پادساعت‌گرد (خلاف جهت عقربه‌های ساعت). .TP \fB-rotate180\fP .TP \fB-r180\fP چرخش ۱۸۰ درجه. .TP \fB-rotate270\fP .TP \fB-r270\fP .TP \fB-cw\fP چرخش ۲۷۰ درجه در جهت پادساعت‌گرد (۹۰ درجه در جهت عقربه‌های ساعت). .TP \fB-null\fP بدون تغییر. (هدف از این گزینه راحتی برنامه‌هایی است که پس از محاسبهٔ نوع تبدیل مورد نظر، از جمله در صورت عدم نیاز به هیچ تبدیلی، \fBpamflip\fP را فراخوانی می‌کنند). .sp این گزینه در Netpbm 10.13 (دسامبر ۲۰۰۲) اضافه شد. .TP \fB-xform=\fP\fIxform1\fP\fB,\fP\fIxform2\fP... اعمال تمام تبدیل‌های فهرست‌شده، به ترتیب. مقادیر معتبر برای تبدیل‌ها به شرح زیر هستند و معنایی مشابه با گزینه‌های هم‌نام فوق دارند. .IP \(bu leftright .IP \(bu topbottom .IP \(bu transpose .sp این گزینه در Netpbm 10.13 (دسامبر ۲۰۰۲) اضافه شد. .TP \fB-inverse=\fP باعث می‌شود که تبدیل مورد نظر معکوس هر آن چیزی باشد که توسط گزینه‌های دیگر مشخص شده است. بدین معنا که اگر \fBpamflip\fP را روی یک تصویر اجرا کنید و سپس مجدداً آن را روی خروجی با همان گزینه‌ها به‌همراه \fB-inverse\fP اجرا نمایید، تصویر اصلی را بازپس خواهید گرفت. .sp این گزینه در Netpbm 11.11 (ژوئن ۲۰۲۵) اضافه شد. .UN memory.SS مدیریت حافظه .PP گزینه‌های زیر به \fBpamflip\fP کمک می‌کنند تا از حافظه به طور بهینه استفاده کند. برخی عملیات‌های برگرداندن روی تصاویر بسیار بزرگ می‌تواند باعث شود \fBpamflip\fP مجموعه کاری (working set) بسیار بزرگی داشته باشد؛ به این معنی که اگر حافظهٔ واقعی کافی نداشته باشید، برنامه ممکن است دچار کوبش صفحه (page thrashing) شود، که این موضوع به معنای طول کشیدن زمان اجرای برنامه به اندازه‌ای غیرمعقول است. اگر تمام تصویر شما در حافظهٔ واقعی جا شود، مشکلی نخواهید داشت. اگر صرفاً بالا با پایین یا چپ با راست را برمی‌گردانید، مشکلی نخواهید داشت. در غیر این صورت، دقت کنید. اگر به جزئیات مسئلهٔ کوبش حافظه و نحوهٔ برخورد \fBpamflip\fP با آن علاقه‌مندید، دعوت می‌شوید توضیحات کامل را در کامنت‌های موجود در کد منبع بخوانید. .TP \fB-memsize=\fP\fImebibytes\fP \fImebibytes\fP اندازهٔ حافظهٔ در دسترس برای \fBpamflip\fP بر حسب مبی‌بایت (یا همان مگابایت) است. این مقدار برابر با کمترین میزان حافظهٔ واقعی یا مجازی در دسترس است. \fBpamflip\fP کار خاصی برای تخصیص حافظهٔ واقعی یا کنترل تخصیص آن انجام نمی‌دهد — بلکه صرفاً با ارجاع به حافظهٔ مجازی به طور عادی، هر چقدر حافظه که به آن برسد دریافت می‌کند. مقدار حافظهٔ واقعی مورد بحث، حداکثر مقداری است که انتظار می‌رود \fBpamflip\fP با انجام این کار در نهایت به دست آورد. دانستن این مقدار برای شما البته تقریباً غیرممکن است، اما می‌توانید آن را تخمین بزنید. کل حافظهٔ واقعی در سیستم شما باید عاملی اساسی در تخمین‌تان باشد. .sp اگر \fBpamflip\fP نتواند کل تصویر را در مقدار حافظهٔ تعیین‌شده جا دهد، تبدیل را به صورت تکه‌تکه انجام داده و برای نتایج میانی از فایل‌های موقت استفاده می‌کند. .sp در تبدیل‌های کاملاً افقی (چپ برای راست) یا تبدیل خنثی، \fBpamflip\fP هرگز بیش از یک سطر را در حافظه نگه نمی‌دارد؛ بنابراین اندازهٔ حافظه بی‌اهمیت است و \fBpamflip\fP از فایل‌های موقت استفاده نمی‌کند. .sp در تبدیل‌های کاملاً عمودی (بالا برای پایین)، حتی زمانی که به \fBpamflip\fP حافظهٔ کافی برای نگه داشتن کل تصویر در حافظهٔ مجازی اختصاص دهید، با یک بار پیمایش به آن دسترسی پیدا می‌کند که باعث هیچ‌گونه کوبش صفحه‌ای نمی‌شود؛ بنابراین تکه‌تکه کردن در فایل‌های موقت کمکی نخواهد کرد. .sp حافظهٔ واقعی زمانی اهمیت پیدا می‌کند که شما تبدیلی از نوع ستون برای سطر انجام دهید (مانند \fB-rotate90\fP). در این حالت، حتی اگر \fBpamflip\fP بتواند کل تصویر را به یک‌باره در حافظهٔ مجازی جا دهد، اگر تصویر در حافظهٔ واقعی نیز جا نشود، برنامه به دلیل ترتیب دسترسی \fBpamflip\fP به پیکسل‌ها به شدت دچار کوبش خواهد شد؛ و این یعنی اجرای آن مدت زمان فوق‌العاده زیادی طول خواهد کشید. یک مقدار مناسب برای \fB-memsize\fP، تبادل صفحات (paging) را به طور چشمگیری کاهش می‌دهد. .sp اگر \fB-memsize\fP را بیش از حد بزرگ مشخص کنید، ممکن است \fBpamflip\fP تلاش کند حافظهٔ مجازی بیشتری از مقداری که سیستم به آن اجازه می‌دهد به دست آورد و در نتیجه با شکست مواجه شود. اگر بتواند حافظهٔ مجازی را دریافت کند، اما مقدار \fB-memsize\fP بزرگتر از مقدار حافظهٔ واقعی مجاز توسط سیستم باشد و تبدیل از نوع سطر برای ستون باشد، دچار کوبش صفحه شده و بسیار کند اجرا خواهد شد. مقداری که حتی کمی بیش از حد بالا باشد، همانند مقدار بی‌نهایت در نظر گرفته می‌شود. .sp اگر \fB-memsize\fP را بیش از حد کوچک مشخص کنید، برنامه به دلیل سربار اضافی حاصل از مدیریت فایل‌های موقت، کمی کندتر اجرا خواهد شد. همچنین، اگر محیط شما طوری تنظیم نشده باشد که امکان ایجاد فایل‌های موقت وجود داشته باشد، \fBpamflip\fP ناموفق خواهد بود. .sp انجام کل تبدیل «درون حافظه» به آن اندازه‌ای که ممکن است فکر کنید سرعت کار را بالا نمی‌برد؛ زیرا حتی با وجود فایل‌های موقت، داده‌ها به همان اندازه ممکن است در حافظه وجود داشته باشند. حافظهٔ مجازی روی دیسک صفحه‌بندی می‌شود و فایل‌های دیسک در حافظه کش می‌شوند. در واقع، زمانی که پیکسل‌ها در یک فایل موقت ذخیره می‌شوند، به دلیل اینکه \fBpamflip\fP از فرمت بهینه‌تری استفاده می‌کند، نسبت به ذخیرهٔ «درون حافظه» بسیار فشرده‌تر در حافظه جا می‌گیرند. بنابراین با دادن حافظهٔ کمتر به \fBpamflip\fP، احتمالاً ورودی/خروجی (I/O) دیسک \fIکمتری\fP خواهید داشت. .sp اگر \fB-memsize\fP را مشخص نکنید، \fBpamflip\fP مقدار بی‌نهایت را پیش‌فرض قرار می‌دهد. .sp این گزینه پیش از نسخهٔ 10.7 بستهٔ Netpbm (اوت ۲۰۰۲) وجود نداشت. .sp پیش از نسخهٔ 10.42 بستهٔ Netpbm (مارس ۲۰۰۸)، این گزینه فقط برای حافظهٔ واقعی اعمال می‌شد. \fBpamflip\fP همواره کل تصویر را در حافظهٔ مجازی نگه می‌داشت و اگر نمی‌توانست حافظهٔ مجازی کافی به دست آورد، با شکست مواجه می‌شد. \fBpamflip\fP با ترتیبی به پیکسل‌ها دسترسی می‌یافت که مصرف حافظهٔ واقعی را درون مقدار مشخص‌شده نگه دارد. .TP \fB-pagesize=\fP\fIbytes\fP \fIbytes\fP اندازهٔ یک واحد صفحه‌بندی (paging unit) در سیستم شما بر حسب بایت است — یعنی مقدار حافظه‌ای که به عنوان یک واحد تفکیک‌ناپذیر به حافظه وارد یا از آن خارج می‌شود. پیش‌فرض 4KiB است. .sp این گزینه هیچ تأثیری ندارد. .sp پیش از نسخهٔ 10.42 بستهٔ Netpbm (مارس ۲۰۰۸)، \fBpamflip\fP از آن برای کنترل میزان استفاده از حافظهٔ واقعی بهره می‌برد. .sp این گزینه پیش از نسخهٔ 10.7 بستهٔ Netpbm (اوت ۲۰۰۲) وجود نداشت. .UN misc.SS "متفرقه (Miscellaneous)" .TP \fB-verbose\fP این گزینه باعث می‌شود \fBpamflip\fP پیام‌هایی را درباره روند پیشرفت خود به خطای استاندارد (Standard Error) ارسال کند. .UN seealso .SH "همچنین ببینید (SEE ALSO)" .BR "pnmrotate" (1)\c \&، .BR "pamdice" (1)\c \&، .BR "pamundice" (1)\c \&، .BR "pnm" (1)\c \&، .BR "pam" (1)\c \&، راهنمای \fBjpegtran\fP .UN history .SH "تاریخچه (HISTORY)" .PP ابزار \fBpamflip\fP در Netpbm 10.13 (دسامبر ۲۰۰۲) جایگزین \fBpnmflip\fP شد. \fBpamflip\fP با نسخه‌های پیشین سازگار است، اما بر روی تصاویر PAM نیز کار می‌کند. .UN author .SH "نویسندگان (AUTHORS)" حق نشر (C) ۱۹۸۹ متعلق به Jef Poskanzer. .SH "منبع سند (DOCUMENT SOURCE)" این صفحه راهنما توسط ابزار Netpbm با نام 'makeman' از روی منبع HTML ایجاد شده است. مستندات اصلی در آدرس زیر قرار دارد: .IP .B http://netpbm.sourceforge.net/doc/pamflip.html .PP