Jpegtopnm User Manual(0) Jpegtopnm User Manual(0)

jpegtopnm - تبدیل فایل JPEG/JFIF به تصویر PPM یا PGM

jpegtopnm [-dct {int|fast|float}] [-nosmooth] [-maxmemory N] [{-adobe|-notadobe}] [-comments] [-dumpexif] [-exif=filespec] [-multiple] [-repair] [-verbose] [-tracelevel N] [-traceexif] [filename]

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

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

برنامه jpegtopnm تصاویر JFIF را به تصاویر PPM یا PGM تبدیل می‌کند.

به‌طور پیش‌فرض، jpegtopnm انتظار دارد که جریان ورودی حاوی یک تصویر JFIF باشد و یک تصویر PGM یا PPM را به عنوان خروجی تولید می‌کند. اگر جریان ورودی خالی باشد، برنامه با شکست مواجه می‌شود.

اما با گزینه -multiple، برنامه jpegtopnm تصاویر JFIF را به صورت متوالی از جریان ورودی می‌خواند و به ازای هر ورودی JFIF، یک تصویر PPM یا PGM در جریان خروجی می‌نویسد. اگر جریان ورودی خالی باشد، خروجی نیز خالی خواهد بود.

جریان ورودی، همان filename است که مشخص می‌کنید، یا در صورت عدم تعیین filename، ورودی استاندارد (Standard Input) است. جریان خروجی نیز خروجی استاندارد (Standard Output) خواهد بود.

اگر تصویر ورودی JFIF از نوع طیف خاکستری (grayscale) باشد، jpegtopnm یک تصویر PGM تولید می‌کند؛ در غیر این صورت، تصویر PPM تولید خواهد کرد.

پیش از Netpbm نسخه 10.11 (اکتبر ۲۰۰۲)، برنامه jpegtopnm فاقد قابلیت جریان چندتصویری بود. از نسخه 10.11 تا 10.22، Netpbm همواره به گونه‌ای عمل می‌کرد که گویی گزینه -multiple مشخص شده است. با آغاز Netpbm نسخه 10.23 (ژوئیه ۲۰۰۴)، رفتار پیش‌فرض Netpbm به رفتار پیش از نسخه 10.11 بازگشت و گزینه جدید -multiple برای انتخاب رفتار نسخه 10.12 معرفی شد. دلیل این بازگشت آن بود که در عمل فایل‌هایی کشف شدند که حاوی تصاویر JFIF بودند و به دنبال آن‌ها چیزی غیر از یک تصویر JFIF دیگر قرار داشت. تولیدکنندگان این فایل‌ها انتظار دارند که آن‌ها در هر مفسر JFIF کار کنند، چرا که اغلب مفسران JFIF پس از خواندن نخستین تصویر JFIF صرفاً دست از خواندن فایل می‌کشند.

برنامه jpegtopnm از کتابخانه JPEG متعلق به گروه مستقل JPEG (معروف به Independent JPEG Group یا IJG) برای تفسیر فایل ورودی استفاده می‌کند. برای کسب اطلاعات درباره این کتابخانه به http://www.ijg.org مراجعه کنید.

واژه "JFIF" نام صحیح قالب تصویری است که معمولاً به عنوان "JPEG" شناخته می‌شود. از نظر دقیق فنی، JPEG یک روش فشرده‌سازی است. قالبی از تصویر که از فشرده‌سازی JPEG استفاده می‌کند و به مراتب رایج‌ترین است، JFIF نام دارد. همچنین زیرقالبی از TIFF نیز وجود دارد که از فشرده‌سازی JPEG بهره می‌برد.

قالب EXIF یک قالب تصویری است که زیرقالبی از JFIF به شمار می‌رود (به بیان دقیق‌تر، یک فایل JFIF که حاوی سرایند EXIF به عنوان یک نشانگر APP1 است). برنامه jpegtopnm از EXIF پشتیبانی می‌کند.

فایل‌های JFIF می‌توانند ۸ بیت در هر نمونه (sample) یا ۱۲ بیت در هر نمونه داشته باشند. نوع ۸ بیتی به مراتب رایج‌ترین است. دو نسخه از کتابخانه IJG JPEG وجود دارد: یکی فقط فایل‌های ۸ بیتی و دیگری فقط فایل‌های ۱۲ بیتی را می‌خواند. شما باید کتابخانه مناسب را با jpegtopnm پیوند (link) دهید. در حالت معمول، این بدان معناست که هنگام اجرای jpegtopnm، کتابخانه مربوطه در مسیر جستجوی کتابخانه‌های اشتراکی شما قرار دارد.

برنامه jpegtopnm بسته به اینکه ورودی JFIF دارای ۸ بیت یا ۱۲ بیت در هر نمونه باشد، خروجی را با یک بایت یا دو بایت در هر نمونه تولید می‌کند. در صورت نیاز می‌توانید از pamdepth برای کاهش یک فایل دو بایتی در هر نمونه به یک بایتی در هر نمونه استفاده کنید.

اگر فایل JFIF از فضای رنگی CMYK یا YCCK استفاده کند، ورودی در عمل حاوی اطلاعات کافی برای دانستن دقیق رنگ هر پیکسل نیست. برای دانستن رنگ یک پیکسل، باید ویژگی‌های جوهرهایی را که فضای رنگی به آن‌ها ارجاع می‌دهد دانست. jpegtopnm رنگ‌ها را با استفاده از تبدیل متداولی تفسیر می‌کند که فرض می‌کند تمام جوهرها صرفاً کاهشی و خطی هستند.

برای اطلاع از چگونگی افت کیفیت تصاویر هنگام تبدیل به JFIF و بالعکس، به راهنمای jpegtopnm(1) مراجعه کنید.

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

این گزینه‌ها فقط برای کاربران پیشرفته هستند.

استفاده از روش DCT عدد صحیح (پیش‌فرض).
استفاده از DCT عدد صحیح سریع (با دقت کمتر).
استفاده از روش DCT ممیز شناور (floating-point). روش ممیز شناور اندکی از روش عدد صحیح دقیق‌تر است، اما بسیار کندتر عمل می‌کند مگر اینکه رایانه شما سخت‌افزار ممیز شناور بسیار سریعی داشته باشد. همچنین توجه داشته باشید که نتایج روش ممیز شناور ممکن است در سیستم‌های گوناگون اندکی تفاوت داشته باشد، در حالی که روش‌های عدد صحیح باید در همه جا نتایج یکسانی ارائه دهند. روش عدد صحیح سریع، دقت بسیار کمتری نسبت به دو روش دیگر دارد.
استفاده از یک روتین فراپیش‌نمونه‌برداری (upsampling) سریع‌تر و با کیفیت پایین‌تر.
تعیین سقف حافظه‌ای که jpegtopnm هنگام پردازش تصاویر بزرگ مصرف می‌کند. مقدار بر حسب هزار بایت است، یا اگر پسوند "M" به عدد اضافه شود، بر حسب میلیون بایت خواهد بود. به عنوان مثال، -maxmemory 4m مقدار ۴٬۰۰۰٬۰۰۰ بایت را تعیین می‌کند. اگر jpegtopnm به فضای بیشتری نیاز پیدا کند، از فایل‌های موقت بهره می‌گیرد.
دو گونه از فضای رنگی CMYK (و همچنین YCCK) وجود دارد که ممکن است در ورودی JFIF مورد استفاده قرار گیرند. در حالت عادی، مقدار صفر برای یک مولفه رنگی نشان‌دهنده عدم وجود جوهر است. در حالت دیگر، مقدار صفر به معنی بیشترین پوشش جوهر است. حالت دوم توسط Adobe Photoshop هنگامی که یک فایل خروجی خام JFIF تولید می‌کند به کار می‌رود (البته نه زمانی که خروجی JFIF را به عنوان بخشی از خروجی Encapsulated Postscript ایجاد می‌کند).

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

اگر تصویر JFIF مشخص نکند که CMYK یا YCCK است، این گزینه‌ها هیچ تاثیری نخواهند داشت.

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

چاپ محتوای تفسیرشده هر سرایند Exif موجود در فایل ورودی در فایل خطای استاندارد (Standard Error). مشابه برنامه jhead (که بخشی از بسته Netpbm نیست).

این گزینه در Netpbm نسخه 9.19 (سپتامبر ۲۰۰۱) اضافه شد.

استخراج محتوای سرایند EXIF از تصویر ورودی و نوشتن آن در فایل filespec. مقدار filespec=- به معنای نوشتن آن در خروجی استاندارد است. هنگامی که سرایند EXIF را در خروجی استاندارد می‌نویسید، jpegtopnm تصویر تبدیل‌شده را (که در حالت عادی به خروجی استاندارد ارسال می‌شود) اصلاً خروجی نمی‌دهد.

برنامه jpegtopnm محتوای سرایند EXIF را بایت‌به‌بایت می‌نویسد که از فیلد طول دو بایتی (که این طول شامل همان دو بایت نیز می‌شود) آغاز می‌گردد.

می‌توانید از این فایل به عنوان ورودی برای pnmtojpeg استفاده کنید تا یک سرایند EXIF عیناً مشابه را در یک تصویر جدید JFIF درج کند.

اگر هیچ سرایند EXIF وجود نداشته باشد، jpegtopnm دو بایت صفر دودویی و نه هیچ چیز دیگری می‌نویسد.

یک سرایند EXIF به شکل یک نشانگر APP1 در JFIF است. تنها اولین نشانگر از این نوع در سرایند JFIF در نظر گرفته می‌شود.

این گزینه در Netpbm نسخه 9.19 (سپتامبر ۲۰۰۱) اضافه شد.

خواندن چندین تصویر JFIF به صورت متوالی از جریان ورودی. برای جزئیات به بخش توضیحات مراجعه کنید.

این گزینه در Netpbm نسخه 10.23 (ژوئیه ۲۰۰۴) جدید بود.

اگر ورودی JFIF نامعتبر است، تلاش می‌کند تا هر اطلاعاتی را که در آنجا موجود است نجات داده و یک تصویر PNM معتبر به عنوان خروجی تولید کند.

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

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

یک مورد خاص که در آن -repair تفاوت ایجاد می‌کند، حالت رایجی است که فایل در نقطه‌ای پس از سرایند JFIF ناقص و بریده شده باشد (truncated). بدون -repair، این حالت همواره باعث خطا می‌شود؛ با -repair همواره موفق خواهد بود. از آنجا که اطلاعات تصویر در جریان JFIF معمولاً از بالا به پایین چیده شده است، تصویری که jpegtopnm در این حالت تولید می‌کند دارای محتوای تصویر مناسب در بالا است، اما بخش پایینی آن با رنگ خاکستری پر (pad) شده است.

این گزینه در Netpbm نسخه 10.38.0 (مارس ۲۰۰۷) افزوده شد. پیش از آن، jpegtopnm در این موارد همیشه با شکست مواجه می‌شد.

چاپ هرگونه دیدگاه (کامنت) موجود در فایل ورودی در فایل خطای استاندارد.
چاپ جزئیات مربوط به تبدیل در فایل خطای استاندارد.
فعال‌سازی پیام‌های ردگیری (trace) کتابخانه JPEG در فایل خطای استاندارد. مقدار بزرگ‌تر برای n اطلاعات ردگیری بیشتری به همراه دارد. گزینه -verbose متضمن حداقل سطح ردگیری ۱ است.
چاپ اطلاعات ردگیری پیرامون پردازش اطلاعات سرایند EXIF.

این گزینه در Netpbm نسخه 11.02 (مارس ۲۰۲۳) افزوده شد.

این مثال فایل رنگی JFIF به نام foo.jpg را به یک فایل PPM به نام foo.ppm تبدیل می‌کند:

jpegtopnm foo.jpg >foo.ppm

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

از pamscale برای تغییر ابعاد تصویر حاصل استفاده کنید.

از ppmtopgm برای تبدیل یک فایل رنگی JFIF به یک فایل خاکستری PGM استفاده کنید.

به سادگی می‌توانید این مبدل‌ها را با یکدیگر ترکیب کنید؛ برای نمونه:

jpegtopnm foo.jpg | ppmtopgm | pamscale .25 >foo.pgm

گزینه‌های -dct fast و/یا -nosmooth سرعت بیشتری را در ازای کاهشی اندک در کیفیت به دست می‌دهند.

اگر به قدر کافی خوش‌شانس باشید که سخت‌افزار ممیز شناور بسیار سریعی داشته باشید، -dct float ممکن است حتی از -dct fast نیز سریع‌تر باشد. اما در بیشتر رایانه‌ها -dct float کندتر از -dct int است؛ در این صورت ارزش استفاده ندارد، زیرا مزیت دقت نظری آن بسیار ناچیزتر از آن است که در عمل اهمیت داشته باشد.

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

از سوی دیگر، djpeg بر خلاف تمام ابزارهای Netpbm مانند jpegtopnm، از کتابخانه‌های NetPBM برای تولید خروجی خود استفاده نمی‌کند. این بدان معناست که احتمال کمتری دارد با دیگر برنامه‌هایی که با قالب‌های NetPBM کار می‌کنند سازگار باشد. علاوه بر این، نحو دستورات jpegtopnm بر خلاف djpeg با دیگر ابزارهای Netpbm همخوانی دارد.

اگر این متغیر محیطی تنظیم شده باشد، مقدار آن سقف پیش‌فرض حافظه خواهد بود. این مقدار همانند آنچه برای گزینه -maxmemory تشریح شد تعیین می‌شود. گزینه صریح -maxmemory بر هر مقدار JPEGMEM اولویت دارد.

ppm(1), pgm(1), pnmtojpeg(1), pnmquant(1), pamscale(1), ppmtopgm(1), ppmdither(1), pamdepth(1),

صفحه راهنمای djpeg، صفحه راهنمای cjpeg، صفحه راهنمای jpegtran، صفحه راهنمای rdjpgcom، صفحه راهنمای wrjpgcom، صفحه راهنمای jhead

Wallace, Gregory K. "The JPEG Still Picture Compression Standard", Communications of the ACM, April 1991 (vol. 34, no. 4), pp. 30-44.

برنامه jpegtopnm و این راهنما تا حد زیادی از djpeg، کاری از گروه مستقل JPEG (Independent JPEG Group) برگرفته شده‌اند. سایر بخش‌های برنامه توسط Bryan Henderson در ۱۹ مارس ۲۰۰۰ نگاشته شده است.

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

http://netpbm.sourceforge.net/doc/jpegtopnm.html
20 March 2023 netpbm documentation