Pamtopng User Manual(0) Pamtopng User Manual(0)

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

pamtopng [-verbose] [-transparent=color] [-background=color] [-gamma=value] [-chroma='wx wy
rx ry gx gy bx by'] [-srgbintent=intent] [-time=[yy]yy-mm-dd
hh:mm:ss] [-text=file] [-ztxt=file] [-itxt=file] [-interlace] [pnmfile]

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

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

برنامه pamtopng یک تصویر Netpbm را به عنوان ورودی خوانده و یک تصویر PNG به عنوان خروجی تولید می‌کند.

مقادیر مؤلفه‌های رنگ در فایل‌های PNG دارای عرض ۸ یا ۱۶ بیت هستند، بنابراین در صورت لزوم pamtopng رنگ‌ها را مقیاس‌بندی می‌کند تا دارای maxval برابر با ۲۵۵ یا ۶۵۵۳۵ باشند. در این حالت، برای نشان دادن عمق بیتی اولیه، یک تکه (chunk) با نام sBIT اضافه می‌کند.

برنامه pamtopng فقط روی تصاویری با maxval برابر با ۱، ۳، ۱۵، ۲۵۵ یا ۶۵۵۳۵ کار می‌کند. می‌توانید از pamdepth برای تبدیل تصویری با مقادیر دیگر maxval به یکی از این مقادیر استفاده کنید.

برنامه pamtopng از یک PAM رنگی، یک PNG رنگی تولید می‌کند، حتی اگر تنها رنگ‌های موجود در تصویر سایه‌هایی از خاکستری باشند. برای ایجاد یک PNG در مقیاس خاکستری (grayscale) از چنین تصویری (که ممکن است کمی کوچک‌تر باشد)، می‌توانید از سایر برنامه‌های Netpbm برای تبدیل ورودی به مقیاس خاکستری استفاده کنید.

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

مزیت اصلی pamtopng نسبت به pnmtopng این است که اولی می‌تواند از کانال شفافیت یک تصویر PAM برای تولید اطلاعات شفافیت در PNG استفاده کند. در مقابل، مدیریت کانال آلفا در pnmtopng بسیار دشوار و پرزحمت است.

یک تفاوت که وجود ندارد، و ممکن است برخی افراد به اشتباه از نام‌ها برداشت کنند، قالب‌های ورودی ممکن است. هر دو برنامه می‌توانند ورودی‌های PBM، PGM، PPM و PAM را دریافت کنند.

از آنجا که pnmtopng تقریباً همیشه وجود داشته است، برنامه‌ها و رویه‌هایی که از آن استفاده می‌کنند سازگاری و قابلیت حمل بیشتری نسبت به برنامه‌های مبتنی بر pamtopng دارند. همچنین قدمت و محبوبیت آن احتمالاً باعث می‌شود باگ‌های کمتری داشته باشد.

برنامه pamtopng هیچ روشی برای انجام کارهایی که گزینه‌های زیر در pnmtopng انجام می‌دهند ندارد:

  • -palette
  • -history
  • -filter
  • -size
  • -paeth
  • -hist
  • -nofilter
  • -sub
  • -up
  • -avg
  • -force
  • -libversion
  • -compression
  • -comp_xxx

برخی دیگر از عملکردهای pnmtopng که pamtopng فاقد آن‌هاست عبارتند از:

•
هنگامی که رنگ شفاف یا پس‌زمینه‌ای را مشخص می‌کنید که در تصویر وجود ندارد، pnmtopng می‌تواند به صورت اختیاری نزدیک‌ترین رنگ موجود در تصویر را انتخاب کند. اما pamtopng همیشه دقیقاً از رنگی که تعیین کرده‌اید استفاده می‌کند.

ویژگی‌هایی که در هر دو برنامه وجود دارند عمدتاً با ساختار دستوری مشابهی کنترل می‌شوند. اما تفاوت‌های زیر وجود دارد:

  • گزینه -rgb در pnmtopng در برنامه pamtopng به صورت -chroma است. نام -chroma مناسب‌تر است و در واقع نامی بود که pnmtopng در ابتدا استفاده می‌کرد، اما زمانی که مجبور شدیم نحو مقدار گزینه را برای انطباق با بقیه Netpbm تغییر دهیم، ناچار شدیم نام آن را تغییر دهیم.
  • گزینه -modtime در pnmtopng در برنامه pamtopng به -time تبدیل شده است. منشأ تغییر -modtime مشابه -rgb است.

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

برنامه pamtopng رنگ مشخص‌شده را به عنوان رنگ شفاف در تصویر PNG علامت‌گذاری می‌کند -- هر پیکسلی با این رنگ کاملاً شفاف خواهد بود. این کار باعث می‌شود pamtopng یک تکه tRNS را در تصویر قرار دهد که مشخص‌کننده آن رنگ است.

رنگ (color) را همان‌طور که برای آرگومان روال کتابخانه‌ای pnm_parsecolor() شرح داده شده مشخص کنید؛ مانند red یا rgb:ff/00/0d.

این گزینه باعث می‌شود pamtopng یک تکه (chunk) رنگ پس‌زمینه در خروجی PNG ایجاد کند که می‌تواند برای تبدیلات بعدی کانال شفافیت یا رنگ شفاف به کار رود. مقدار color را همانند -transparent مشخص کنید.

 

این گزینه باعث می‌شود pamtopng یک تکه gAMA ایجاد کند. این اطلاعات به توصیف نحوه تفسیر مقادیر رنگ در PNG کمک می‌کند. بدون تکه gAMA، هر برنامه‌ای که PNG را تفسیر می‌کند باید این اطلاعات را جداگانه به دست آورد (یا صرفاً یک مقدار استاندارد را فرض کند). اگر ورودی شما یک تصویر PPM یا PGM واقعی است، باید -gamma=.45 را مشخص کنید. اما گاهی اوقات تصاویری تولید می‌شوند که ظاهراً PPM هستند با این تفاوت که تصویر از یک تابع انتقال گامای متفاوت از آنچه برای PPM مشخص شده استفاده می‌کند. یک حالت رایج این امر زمانی است که تصویر توسط سخت‌افزار ساده‌ای ایجاد شده باشد که فاقد توان محاسبات دیجیتال است. همچنین برخی برنامه‌های ساده که تصاویر را از صفر ایجاد می‌کنند این کار را با یک انتقال گاما که مقدار آن 1.0 است انجام می‌دهند.

 

این گزینه نحوه تعیین رنگ خاص بر اساس مقادیر مؤلفه‌های قرمز، سبز و آبی یک پیکسل را با مشخص کردن رنگینگی (chromaticity) این ۳ منبع روشنایی اصلی و رنگ سفید (یعنی شدت کامل هر سه) تعیین می‌کند.

مقدار chroma_list فهرستی از ۸ عدد اعشاری ممیز شناور است که با فاصله از هم جدا شده‌اند: رنگینگی‌های X و Y استاندارد CIE-1931 (به همان ترتیب) برای هر یک از رنگ‌های سفید، قرمز، سبز و آبی، به همان ترتیب.

این اطلاعات در تکه cHRM تصویر PNG ذخیره می‌شود.

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

این گزینه مشخص می‌کند که ورودی یک تصویر شبه‌Netpbm است که از فضای رنگی sRGB استفاده می‌کند (برخلاف Netpbm واقعی) و نشان می‌دهد قصد دارید رنگ‌ها چگونه رندر شوند. این گزینه باعث می‌شود pamtopng یک تکه sRGB در تصویر PNG بگنجاند که این هدف را مشخص می‌کند؛ برای اطلاعات بیشتر درباره معنای واقعی این مفهوم به مستندات PNG مراجعه کنید.

مقدار intent یکی از موارد زیر است:

  • perceptual
  • relativecolorimetric
  • saturation
  • absolutecolorimetric
این گزینه امکان گنجاندن رشته‌های متنی دلخواه را در خروجی PNG به صورت تکه‌های tEXt فراهم می‌کند.

filename نام فایلی است که رشته‌های متنی شما را در بر دارد.

خروجی برای هر ورودی در فایل، شامل یک تکه tEXt مجزا خواهد بود.

در اینجا نمونه‌ای از یک فایل رشته متنی آورده شده است:

	Title           PNG file
	Author          John Doe
	Description     how to include a text chunk
                        PNG file
	"Creation Date" 2015-may-11
	Software        pamtopng

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

اولین کلمه در یک ورودی، کلید رشته متنی است (مانند 'Title'). این کلید از ستون اول خط شروع شده و تا اولین نویسه جداکننده یا انتهای خط (هر کدام زودتر باشد) ادامه می‌یابد بدون این‌که نویسه جداکننده جزو کلید باشد. می‌توانید کلید را در گیومه دوتایی قرار دهید که در این صورت کلید می‌تواند شامل چند کلمه باشد. گیومه‌ها جزئی از کلید نیستند. خود رشته متنی پس از کلید و هرگونه نویسه جداکننده بعد از آن، به‌علاوه متن خطوط ادامه‌دار بعدی آغاز می‌شود.

هیچ محدودیتی در طول سطر، ورودی، کلید یا رشته متنی فایل وجود ندارد. همچنین هیچ محدودیتی در تعداد ورودی‌ها وجود ندارد.

مشابه -text است، با این تفاوت که رشته متنی در خروجی PNG فشرده‌سازی می‌شود. برنامه pamtopng به جای تکه‌های tEXt از تکه‌های zTXt استفاده می‌کند.

 

مشابه -text است، با این تفاوت که رشته‌های متنی می‌توانند به زبانی غیر از انگلیسی باشند. تصویر PNG نشان می‌دهد که آن زبان چیست و کلید رشته متنی را هم به انگلیسی و هم به آن زبان شامل می‌شود. برنامه pamtopng به جای تکه‌های tEXt از تکه‌های iTXt استفاده می‌کند.

برای هر رکورد، باید زبان را مشخص کنید و کلید را هم به انگلیسی و هم به زبان رشته متنی ارائه دهید.

مثال:

	Language        nl-NL  Taal             nl-NL
        Title           nl-NL  Titel            PNG file
        Author          nl-NL  Auteur           Pietje Puk
        Description     nl-NL  Omschrijving     Tekst in het Nederlands.

مشخصات زبان بر اساس استاندارد ISO 639-1 است؛ برای کدهای معتبر به http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes مراجعه کنید. قالب کد می‌تواند دو نویسه‌ای مانند "nl" یا یک کد گسترش‌یافته مانند "en-US" باشد.

این گزینه به شما اجازه می‌دهد مقدار زمان ویرایش (modification time) را برای قرار گرفتن در خروجی PNG مشخص کنید. می‌توانید پارامتر سال را به صورت مقدار دو رقمی یا چهار رقمی مشخص نمایید.

 

این گزینه باعث می‌شود فایل PNG به صورت درهم‌بافته (interlaced) در قالب Adam7 تولید شود. قالب درهم‌بافته قالبی است که در آن داده‌های شطرنجی با نمایشی با وضوح پایین از کل تصویر آغاز می‌شود، سپس با اطلاعات تکمیلی برای کل تصویر ادامه می‌یابد، سپس اطلاعات باز هم بیشتر و الی آخر. به‌ویژه در Adam7، هفت مرحله پیمایش روی کل تصویر انجام می‌شود. این قابلیت زمانی مفید است که تصویر را از طریق یک خط ارتباطی کند دریافت می‌کنید و شخصی منتظر دیدن آن است. ساده‌ترین کار در چنین شرایطی این است که منتظر بمانید کل تصویر برسد و سپس آن را بلافاصله نمایش دهید، اما در این حالت کاربر زمان را با خیره شدن به یک فضای خالی تلف می‌کند تا کل تصویر دریافت شود. در قالب استاندارد غیر درهم‌بافته، داده‌ها سطر به سطر از بالا می‌رسند، بنابراین نمایشگر می‌تواند هر سطر تصویر را به محض رسیدن نمایش دهد و به تدریج به سمت پایین پیش برود. اما با یک تصویر درهم‌بافته، نمایشگر می‌تواند با نمایش نسخه با وضوح پایین از کل تصویر شروع کرده و با رسیدن داده‌های بیشتر، کیفیت نمایش را به تدریج بهبود بخشد.

هنگامی که این گزینه را مشخص می‌کنید، pamtopng باید کل تصویر را به طور همزمان در حافظه نگه دارد، در حالی که بدون آن، برنامه تنها یک سطر شطرنجی را در هر لحظه در حافظه نگه می‌دارد. اگر حافظه کافی برای این کار نداشته باشید، ممکن است با کندی بسیار شدید یا خطا مواجه شوید - نه تنها در فرآیند اجرای pamtopng، بلکه احتمالاً در سراسر سیستمی که حافظه را با آن به اشتراک می‌گذارد. برنامه pnmtopng این محدودیت را ندارد (حتی هنگام تولید PNG درهم‌بافته تنها یک سطر را در حافظه نگه می‌دارد).

این گزینه در Netpbm 10.86 (مارس 2019) اضافه شد.

این گزینه باعث می‌شود برنامه اطلاعات و وقایع گوناگون درباره فرآیند تبدیل را نمایش دهد.

 

pngtopam(1), pnmtopng(1), pam(1), pnm(1)

برای اطلاعات درباره قالب PNG، به http://www.w3.org/TR/PNG ، http://libpng.org/pub/png ، http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes و http://schaik.com/png مراجعه کنید.

برنامه pamtopng در Netpbm 10.70 (ژوئن 2015) معرفی شد.

پیش از pamtopng، دو روش برای ایجاد تصاویر PNG در Netpbm وجود داشت: pnmtopng و pamrgbatopng. تاریخچه برنامه اول در بالا مورد بحث قرار گرفت. برنامه دوم در سال ۲۰۰۵ به عنوان روشی ساده برای رفع یک نیاز اساسی که pnmtopng پاسخگوی آن نبود به Netpbm اضافه شد: امکان تبدیل کانال آلفا در یک تصویر PAM به کانال آلفا در تصویر PNG.

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

هدف در آن دوران این بود که سرانجام pnmtopng گسترش یابد تا قابلیت کانال آلفای PAM را داشته باشد، نام آن به pamtopng تغییر کند و pamrgbatopng کنار گذاشته شود. اما pnmtopng به دلیل تنوع شگفت‌انگیز ویژگی‌هایش و لزوم حفظ سازگاری عقروعقب، چنان برنامه پیچیده‌ای است که افزودن آن قابلیت به آن وظیفه‌ای دلهره‌آور بود و تا ده سال هیچ‌کس تلاشی برای انجام آن نکرد.

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

و این فرصت وجود داشت که آن ویژگی‌ها حذف شوند: می‌توانستیم از نام جدید 'pamtopng' برای برنامه‌ای جدید استفاده کنیم، برنامه موجود را تحت نام 'pnmtopng' نگه داریم و از بسیاری از دردسرهای سازگاری با گذشته دوری گزینیم.

از این رو، ویلم ون شایک (Willem van Schaik) برنامه‌ای در سطح میانی نوشت که همه ویژگی‌های اصلی pnmtopng را به همراه پشتیبانی از کانال آلفای pamrgbatopng، با کدی ساده و مرتب شامل می‌شد. این برنامه همان pamtopng بود.

از آنجا که pamrgbatopng هیچ گزینه‌ای نداشت، pamtopng حتی بدون تلاش خاصی با آن سازگار بود. بنابراین، به محض این‌که pamtopng را به Netpbm اضافه کردیم، pamrgbatopng را حذف کرده و توصیه نمودیم که pamrgbatopng به عنوان یک نام مستعار (alias) برای pamtopng نصب شود.

کپی‌رایت (C) ۱۹۹۵-۱۹۹۷ متعلق به Alexander Lehmann و Willem van Schaik. کپی‌رایت (C) ۲۰۱۵ متعلق به Willem van Schaik.

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

http://netpbm.sourceforge.net/doc/pamtopng.html
13 March 2019 netpbm documentation