Pngtopam User Manual(0) Pngtopam User Manual(0)

pngtopam - تبدیل یک تصویر PNG به یک تصویر Netpbm

pngtopam [-verbose] [-alphapam | -alpha | -mix] [-background=color] [-gamma=value] [-text=filename] [-time] [-byrow] [pngfile]

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

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

برنامه pngtopam یک تصویر PNG (تصویر گرافیکی شبکه‌ای قابل حمل - Portable Network Graphics) را به عنوان ورودی خوانده و یک تصویر Netpbm به عنوان خروجی تولید می‌کند. نوع فایل خروجی به فایل ورودی بستگی دارد: اگر سیاه‌وسفید باشد، pngtopam یک فایل PBM ایجاد می‌کند. اگر تصویر در مقیاس خاکستری (grayscale) باشد، یک فایل PGM ایجاد می‌کند. در غیر این صورت، یک فایل PPM ایجاد می‌کند. با این استثنا که با گزینه -alphapam، همیشه یک فایل PAM ایجاد می‌کند. آن فایل بسته به اینکه ورودی دارای رنگ باشد یا خیر، دارای tuple type از نوع GRAYSCALE_ALPHA یا RGB_ALPHA خواهد بود.

برای تبدیل در جهت معکوس، از pamtopng یا pnmtopng استفاده کنید. برنامه نخست، مدرن‌تر است و می‌تواند اطلاعات شفافیت را در یک فایل PAM (همانند آنچه با pngtopam -alphapam تولید می‌کنید) تشخیص دهد. این برنامه تنها از ژوئن ۲۰۱۵ وجود دارد. برنامه دوم قابلیت‌های بیشتری دارد، اما احتمالاً ویژگی‌هایی نیستند که در دنیای مدرن اهمیتی داشته باشند.

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

نمایش اطلاعات گوناگون درباره تصویر PNG ورودی و فرآیند تبدیل.

اگر اطلاعات بیشتری درباره تصویر PNG می‌خواهید، از pngcheck (که بخشی از Netpbm نیست) استفاده کنید.

یک تصویر خروجی واحد شامل تصویر اصلی (پیش‌زمینه) و کانال شفافیت یا ماسک شفافیت تولید می‌کند. این تصویر در فرمت PAM با tuple type از نوع GRAYSCALE_ALPHA (با عمق ۲ کانال) یا RGB_ALPHA (با عمق ۴ کانال) خواهد بود.

تنها می‌توانید یکی از گزینه‌های -alphapam، -alpha و -mix را مشخص کنید. اگر هیچ‌کدام را مشخص نکنید، pngtopam تصویری از پیش‌زمینه ورودی تولید کرده و اطلاعات شفافیت را دور می‌ریزد.

این گزینه در Netpbm 10.44 (سپتامبر ۲۰۰۸) جدید بود.

کانال شفافیت یا ماسک شفافیت تصویر را در خروجی می‌نویسد. نتیجه بسته به اینکه آیا سطوح متفاوتی از شفافیت وجود دارد یا خیر، یک فایل PBM یا PGM خواهد بود.

برنامه pngtopam تصویر اصلی (پیش‌زمینه) را دور می‌ریزد.

تنها می‌توانید یکی از گزینه‌های -alphapam، -alpha و -mix را مشخص کنید. در صورت عدم مشخص کردن هیچ‌یک، pngtopam تصویری از پیش‌زمینه ورودی تولید کرده و اطلاعات شفافیت را دور می‌ریزد.

تصویر را همراه با شفافیت یا ماسک شفافیت بر روی یک پس‌زمینه ترکیب می‌کند. رنگ پس‌زمینه توسط تکه (chunk) bKGD در فایل PNG تعیین می‌شود، مگر اینکه آن را با -background بازنویسی کنید. اگر فایل PNG فاقد قطعه bKGD باشد و شما -background را مشخص نکنید، رنگ پس‌زمینه سفید خواهد بود.

تنها می‌توانید یکی از گزینه‌های -alphapam، -alpha و -mix را مشخص کنید. با هیچ‌یک از آن‌ها، pngtopam تصویری از پیش‌زمینه ورودی تولید کرده و اطلاعات شفافیت را دور می‌ریزد.

این گزینه رنگ پس‌زمینه‌ای را که هنگام تعیین -mix تصویر با آن ترکیب می‌شود مشخص می‌کند.

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

مثال‌ها:

  • -background=rgb:01/ff/80
  • -background=rgbi:1/255/128

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

    نمی‌توانید -background را مشخص کنید مگر اینکه -mix را نیز تعیین کرده باشید. پیش از Netpbm 10.27 (مارس ۲۰۰۵)، می‌توانستید -background را بدون -mix تعیین کنید و صرفاً نادیده گرفته می‌شد. (این امر موجب یک مشکل کاربردپذیری شده بود).

این گزینه موجب می‌شود pngtopam اطلاعات گامای تصویر در فایل PNG (از قطعه gAMA) را رعایت کند. احتمالاً بر حسب یک تصادف تاریخی، pngtopam به‌طور پیش‌فرض این اطلاعات را نادیده می‌گیرد، با این فرض که تصویر از همان تبدیل گامایی استفاده می‌کند که تصویر Netpbm دارد؛ بنابراین اگر فایل PNG چنین تبدیلی نداشته باشد، تصویر خروجی رنگ‌های متفاوتی نسبت به آنچه فایل PNG در واقع نشان می‌دهد خواهد داشت. (با این حال، به ندرت پیش می‌آید که یک فایل PNG از تبدیل گامای متفاوتی نسبت به آنچه فرمت‌های Netpbm تعیین کرده‌اند استفاده کند، یا اگر چنین است، آن را با یک قطعه gAMA مشخص کند).

اما هنگامی که -gamma را تعیین می‌کنید، یک قابلیت عجیب دیگر که احتمالاً یک خطای تاریخی است به دست می‌آورید: pngtopam مقدار گامای صفحه‌نمایش تعیین‌شده را در پیکسل‌های خروجی اعمال می‌کند، به طوری که نمونه‌ها در خروجی Netpbm از مشخصات فرمت Netpbm منحرف شده و مقادیر شدت خام و مناسب برای ارسال مستقیم به نمایشگر را تشکیل می‌دهند. این عملکرد اساساً صرفاً توانایی کتابخانه PNG در اعمال تصحیح گاما به پیکسل‌ها هنگام خواندن آن‌ها از فایل PNG را به کار می‌گیرد تا مقادیر مناسب برای ارسال به یک نمایشگر خاص در شرایط دید خاص تولید شود. این عملکرد عجیبی است زیرا ربطی به PNG ندارد و به این دلیل که در Netpbm، روش مرسوم برای انجام تصحیحات گامای مناسب برای ارسال به یک نمایشگر خاص تحت شرایط دید معین، استفاده از برنامه pnmgamma است که بر روی خروجی عادی pngtopam اعمال می‌شود.

اگر -gamma را مشخص کنید، اما تصویر PNG تعیین نکرده باشد که از چه تبدیل گامایی استفاده می‌کند (قطعه gAMA وجود نداشته باشد)، pngtopam یک تبدیل توانی ساده با گامای تصویر ۱٫۰ را فرض می‌کند. احتمالاً این مقدار، گامای واقعی تصویر نیست؛ بسیار محتمل‌تر است که ۰٫۴۵ باشد.

از آنجا که گامای مانیتورهای جبران‌نشده حدود ۲٫۶ است که منجر به گامای تصویر ۰٫۴۵ می‌شود، برخی موقعیت‌های معمول عبارتند از: هنگامی که گامای تصویر ۰٫۴۵ است (برای بررسی از -verbose استفاده کنید) و تصویر بیش از حد روشن است، سیستم شما تصحیح گاما شده است، بنابراین با "-gamma 1.0"; تبدیل کنید. هنگامی که هیچ قطعه gAMA وجود ندارد یا گامای تصویر ۱٫۰ است، از ۲٫۲ برای روشن‌تر کردن تصویر و از ۰٫۴۵ برای تاریک‌تر کردن آن استفاده کنید.

یک نکته عجیب که باید هنگام استفاده از -gamma بر روی تصویری با شفافیت به آن توجه کرد: تصویر PNG تعیین می‌کند که یک رنگ خاص شفاف است، یعنی هر پیکسل در تصویر با آن رنگ، شفاف است. اما pngtopam این مورد را به عنوان اعمال در فضای تصحیح‌شده با گاما تفسیر می‌کند، و ممکن است دقت در آن فضا کمتر از نسخه اصلی باشد، که به این معنی است که چندین رنگ تصحیح‌نشده به یک رنگ تصحیح‌شده یکسان نگاشت می‌شوند. بنابراین تصور کنید که تصویر شامل ۳ سایه از رنگ سفید (خاکستری) است و تعیین می‌کند که یکی از آن‌ها شفاف است. پس از تصحیح گاما، آن سه سایه غیرقابل تشخیص می‌شوند، بنابراین pngtopam پیکسل‌های هر سه سایه را شفاف در نظر می‌گیرد.

قطعات tEXt و zTXt را با فرمتی که در راهنمای کاربری pnmtopng توضیح داده شده در یک فایل می‌نویسد. این قطعات حاوی یادداشت‌ها یا توضیحات متنی هستند.
قطعه tIME را در خروجی خطای استاندارد (stderr) چاپ می‌کند.
این گزینه می‌تواند باعث شود pngtopam سریع‌تر یا در محیط‌هایی اجرا شود که در غیر این صورت با شکست مواجه می‌شد.

برنامه pngtopam دو روش برای انجام تبدیل از PNG به PAM دارد که به ترتیب از دو قابلیت کتابخانه PNG استفاده می‌کنند:

کل تصویر را به یکباره با استفاده از png_read_image() در حافظه رمزگشایی می‌کند، سپس به PAM تبدیل کرده و سطر به سطر خروجی می‌دهد.
با استفاده از png_read_row() یک سطر را در هر لحظه می‌خواند، تبدیل می‌کند و در خروجی می‌نویسد.

روش Whole Image عموماً ترجیح داده می‌شود زیرا کتابخانه PNG بخش بیشتری از کار را انجام می‌دهد، که به این معنی است که امکانات فرمت PNG بیشتری را در حال حاضر و در آینده درک می‌کند. همچنین، اگر فایل PNG درهم‌بافته (interlaced) باشد، pngtopam نمی‌داند چگونه سطرها را به ترتیب درست سرهم کند.

روش Row By Row حافظه بسیار کمتری مصرف می‌کند، که به این معنی است که با تصاویر بزرگ، می‌تواند در محیط‌هایی اجرا شود که Whole Image قادر به اجرا نیست و همچنین ممکن است سریع‌تر اجرا شود. و از آنجا که کد بومی Netpbm بخش بیشتری از کار را انجام می‌دهد، ممکن است انعطاف‌پذیرتر باشد یا حداقل اگر مشکلی در PNG وجود داشته باشد، اطلاعات تشخیصی بهتری ارائه دهد.

کد بومی Netpbm ممکن است کاری را به درستی انجام دهد که کتابخانه PNG به اشتباه انجام می‌دهد، یا برعکس.

در Netpbm، ما کارایی عملکردی را بر سرعت و کارایی ترجیح می‌دهیم، بنابراین به صورت پیش‌فرض pngtopam از روش Whole Image استفاده می‌کند. اگر بهبود سرعت یا نیازهای منابع مد نظرتان است، می‌توانید Row By Row را با -byrow انتخاب کنید.

گزینه -byrow در Netpbm 10.54 (مارس ۲۰۱۱) جدید بود.

یک جریان TIFF حاوی داده‌های شطرنجی (raster) است که می‌تواند به روش‌های مختلفی در جریان چیده شود. معمولاً این چیدمان به صورت سطری است، به طوری که سطر بالا اول قرار می‌گیرد و پیکسل‌ها از چپ به راست در هر سطر هستند، اما جهت‌گیری‌های بسیار دیگری نیز ممکن است.

جهت‌گیری رایج، مشابه همان جهتی است که فرمت‌های Netpbm استفاده می‌کنند، بنابراین tifftopnm زمانی که شطرنجی TIFF به آن صورت جهت‌گیری شده باشد می‌تواند وظایف خود را بسیار کارآمد انجام دهد.

اما اگر شطرنجی TIFF به هر روش دیگری جهت‌گیری شده باشد، تبدیل آن به فرمت Netpbm می‌تواند پردازش قابل‌توجهی برای tifftopnm به همراه داشته باشد.

pamtopng(1), pnmtopng(1), pngtopnm(1), ptot, pnmgamma(1), pnm(1)

برای اطلاعات درباره فرمت PNG، ببینید: http://schaik.com/png .

یک تصویر PNG حاوی اطلاعات زیادی است که نمی‌توان در فرمت‌های Netpbm نمایش داد. بنابراین، هنگام تبدیل به فرمتی دیگر با دستور "pngtopam | pnmtoxxx" اطلاعات را از دست می‌دهید. اگر یک مبدل اختصاصی وجود دارد که مستقیماً به فرمت دیگر تبدیل می‌کند، مثلاً ptot برای تبدیل از PNG به TIFF، با استفاده از آن به نتایج بهتری دست خواهید یافت.

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

این برنامه با اندکی بهینه‌سازی کد می‌توانست بسیار سریع‌تر باشد. همانند هر برنامه دیگر Netpbm، سرعت همیشه پس از توسعه سریع کنونی و آتی قرار می‌گیرد.

برنامه pngtopam در Netpbm 10.44 به عنوان جایگزینی برای pngtopnm معرفی شد. بهبود اصلی نسبت به pngtopnm این بود که می‌توانست یک تصویر PAM همراه با یک کانال شفافیت تولید کند، در حالی که با pngtopnm باید کانال شفافیت را به عنوان یک فایل جداگانه در یک اجرای مجزا استخراج می‌کردید.

برنامه pngtopnm در Netpbm 8.1 (مارس ۲۰۰۰) جدید بود؛ نخستین تغییر بزرگ بسته در دوره نوزایی Netpbm. این برنامه و pnmtopng صرفاً از بسته pnmtopng(1) توسط Greg Roelofs کپی شده بودند. آن‌ها بر اساس برنامه‌های مرجع ساده‌تری توسط Alexander Lehmann <alex@hal.rhein-main.de> و Willem van Schaik <willem@schaik.com> ساخته شده و همراه با کتابخانه PNG آن‌ها توزیع شده بودند.

تقریباً تمام کد از زمانی که از بسته pnmtopng کپی شده بود تغییر کرده است که بیشتر آن فقط برای بهبود قابلیت نگهداری بوده است.

حق نشر © ۱۹۹۵-۱۹۹۷ متعلق به Alexander Lehmann و Willem van Schaik است.

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

http://netpbm.sourceforge.net/doc/pngtopam.html
22 July 2008 netpbm documentation