OPTIPNG(1) OptiPNG Manual OPTIPNG(1)

optipng - بهینه‌سازی فایل‌های Portable Network Graphics (PNG)

optipng [<options...>] [--] <files...>

برنامه OptiPNG تلاش می‌کند فایل‌های PNG را بهینه‌سازی کند؛ یعنی اندازه آن‌ها را بدون از دست رفتن اطلاعات معنایی به کمترین میزان کاهش دهد. افزون بر این، این برنامه مجموعه‌ای از عملکردهای کمکی مانند بررسی یکپارچگی، بازیابی فراداده (metadata) و تبدیل تصاویر نقطه‌ای (pixmap) به PNG را انجام می‌دهد.

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

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

برنامه OptiPNG هر فایل تصویری داده‌شده در خط فرمان را به‌صورت زیر پردازش می‌کند:

•اگر تصویر در قالب PNG باشد:

تلاش می‌کند فایل داده‌شده را درجا (in-place) بهینه‌سازی کند. اگر بهینه‌سازی موفقیت‌آمیز باشد یا اگر گزینه -force فعال شده باشد، فایل اصلی با نسخه بهینه‌شده آن جایگزین می‌شود. در هر صورت، اگر گزینه -keep فعال باشد، از فایل اصلی نسخه پشتیبان تهیه خواهد شد.

•اگر تصویر در یک قالب خارجی باشد:

یک نسخه بهینه‌شده PNG از فایل داده‌شده می‌سازد. نام فایل خروجی با استفاده از نام فایل اصلی و پسوند .png ساخته خواهد شد.

به غیر از قواعد ذکرشده در بالا، هیچ فایل موجودی رونویسی نمی‌شود، مگر اینکه گزینه -clobber فعال باشد.

-?, -h, -help

نمایش خلاصه‌ای کامل از گزینه‌ها.

-backup, -keep

نگهداری یک نسخه پشتیبان از فایل‌های تغییریافته.

-clobber

رونویسی روی فایل‌های خروجی و فایل‌های پشتیبان موجود.

تحت این گزینه، در صورتی که گزینه -backup فعال نباشد، پشتیبان‌های قدیمی فایل‌های رونویسی‌شده حذف خواهند شد.

-dir directory

نوشتن فایل‌های خروجی در directory.

-fix

فعال‌سازی بازیابی خطا. این گزینه هیچ اثری روی فایل‌های ورودی معتبر ندارد.

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

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

-force

اجبار به نوشتن یک فایل خروجی جدید.

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

-out file

نوشتن فایل خروجی در file.

خط فرمان باید دقیقاً حاوی یک فایل ورودی باشد.

-preserve

حفظ مشخصه‌های فایل (برچسب‌های زمانی، دسترسی‌های فایل و غیره) در صورت امکان.

-quiet, -silent

اجرا در حالت خاموش (بدون خروجی متنی).

-simulate

اجرا در حالت شبیه‌سازی: آزمایش‌ها انجام می‌شوند، اما هیچ فایل خروجی‌ای ساخته نمی‌شود.

-v

فعال‌سازی گزینه‌های -verbose و -version.

-verbose

اجرا در حالت پرگو (verbose).

-version

نمایش اطلاعات حق نشر، نسخه و ساخت برنامه.

--

پایان پردازش گزینه‌های خط فرمان.

-o level

سطح بهینه‌سازی را انتخاب می‌کند.

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

سطح بهینه‌سازی 1 یک آزمون منفرد فشرده‌سازی IDAT را فعال می‌کند. آزمون انتخاب‌شده موردی است که OptiPNG تصور می‌کند ممکن است مؤثرترین باشد.

سطوح بهینه‌سازی 2 و بالاتر چندین آزمون فشرده‌سازی IDAT را فعال می‌کنند؛ هر چه سطح بالاتر باشد، تعداد آزمون‌ها بیشتر خواهد بود.

رفتار و مقدار پیش‌فرض این گزینه ممکن است در نسخه‌های مختلف برنامه تغییر کند. از گزینه -h برای مشاهده جزئیات مربوط به نسخه خاص خود استفاده کنید.

-f filters

فیلترهای دلتای PNG را انتخاب می‌کند.

آرگومان filters به صورت یک محدوده (مانند -f0-5) مشخص می‌شود، و مقدار پیش‌فرض filters به سطح بهینه‌سازی تعیین‌شده توسط گزینه -o بستگی دارد.

مقادیر فیلتر 0، 1، 2، 3 و 4 نشان‌دهنده فیلترگذاری ایستا هستند و به ترتیب با کدهای استاندارد فیلتر PNG (None، Left، Up، Average و Paeth) مطابقت دارند. مقدار فیلتر 5 نشان‌دهنده فیلترگذاری تطبیقی است که عملکرد آن توسط کتابخانه libpng(3) مورد استفاده OptiPNG تعریف می‌شود.

-full

یک گزارش کامل از IDAT تولید می‌کند. این گزینه ممکن است سرعت آزمون‌ها را کاهش دهد.

-i type

نوع درهم‌بافی (interlace) را انتخاب می‌کند (0-1).

اگر نوع درهم‌بافی 0 انتخاب شود، تصویر خروجی بدون درهم‌بافی (یعنی پویش پیش‌رونده) خواهد بود. اگر نوع درهم‌بافی 1 انتخاب شود، تصویر خروجی با استفاده از روش Adam7 درهم‌بافته خواهد شد.

به طور پیش‌فرض، خروجی همان نوع درهم‌بافی ورودی را خواهد داشت.

-nb

کاهش عمق بیت را اعمال نمی‌کند.

-nc

کاهش نوع رنگ را اعمال نمی‌کند.

-np

کاهش پالت رنگ را اعمال نمی‌کند.

-nx

هیچ‌گونه کاهش بدون اتلاف تصویر را اعمال نمی‌کند: گزینه‌های -nb، -nc و -np را فعال می‌سازد.

-nz

جریان‌های داده IDAT را مجدداً کدگذاری نمی‌کند.

عملیات بهینه‌سازی IDAT که نیازی به بازکدگذاری ندارند (مانند الحاق قطعات IDAT) همچنان انجام می‌شوند.

این گزینه فقط بر روی فایل‌های ورودی PNG تأثیر دارد.

-zc levels

سطوح فشرده‌سازی zlib استفاده‌شده در فشرده‌سازی IDAT را انتخاب می‌کند.

آرگومان levels به صورت یک محدوده (مانند -zc6-9) مشخص می‌شود، و مقدار پیش‌فرض levels به سطح بهینه‌سازی تعیین‌شده توسط گزینه -o بستگی دارد.

عملکرد این گزینه توسط کتابخانه zlib(3) مورد استفاده OptiPNG تعریف می‌شود.

-zm levels

سطوح حافظه zlib استفاده‌شده در فشرده‌سازی IDAT را انتخاب می‌کند.

آرگومان levels به صورت یک محدوده (مانند -zm8-9) مشخص می‌شود، و مقدار پیش‌فرض levels به سطح بهینه‌سازی تعیین‌شده توسط گزینه -o بستگی دارد.

عملکرد این گزینه توسط کتابخانه zlib(3) مورد استفاده OptiPNG تعریف می‌شود.

-zs strategies

راهبردهای فشرده‌سازی zlib استفاده‌شده در فشرده‌سازی IDAT را انتخاب می‌کند.

آرگومان strategies به صورت یک محدوده (مانند -zs0-3) مشخص می‌شود، و مقدار پیش‌فرض strategies به سطح بهینه‌سازی تعیین‌شده توسط گزینه -o بستگی دارد.

عملکرد این گزینه توسط کتابخانه zlib(3) مورد استفاده OptiPNG تعریف می‌شود.

-zw size

اندازه پنجره zlib را (32k,16k,8k,4k,2k,1k,512,256) که در فشرده‌سازی IDAT به کار می‌رود انتخاب می‌کند.

آرگومان size می‌تواند بر حسب بایت (مانند 16384) یا کیلوبایت (مانند 16k) مشخص شود. مقدار پیش‌فرض size روی کمترین اندازه پنجره‌ای تنظیم شده است که خروجی IDAT آن به کوچکی خروجی حاصل از مقدار 32768 باشد.

عملکرد این گزینه توسط کتابخانه zlib(3) مورد استفاده OptiPNG تعریف می‌شود.

-snip

برش یک تصویر از پرونده‌های چندتصویری، پویانمایی یا ویدیویی.

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

-strip objects

حذف اشیای فراداده از یک پروندهٔ PNG.

فرادادهٔ PNG اطلاعات ذخیره‌شده در هر قطعهٔ (chunk) کمکی به جز tRNS است. (tRNS نمایانگر کانال آلفا است، که حتی اگر هنگام رندر کردن نادیده گرفته شود، همچنان یک کانال تصویر مناسب در فضای رنگی RGBA به شمار می‌رود.)

تنها گزینه‌ای که در حال حاضر پشتیبانی می‌شود -strip all است.

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

برخی از گزینه‌ها ممکن است آرگومان‌هایی داشته باشند که پس از نام گزینه می‌آیند و با فاصله یا علامت مساوی (=) جدا می‌شوند. اگر آرگومان گزینه یک عدد یا یک مجموعه‌بازه (rangeset) باشد، می‌توان جداکننده را حذف کرد. برای نمونه:

optipng -out newfile.png  <=>  optipng -out=newfile.png
optipng -o3  <=>  optipng -o 3  <=>  optipng -o=3
optipng -f0,3-5  <=>  optipng -f 0,3-5  <=>  optipng -f=0,3-5

آرگومان‌های مجموعه‌بازه تجمعی هستند. برای نمونه:

optipng -f0 -f3-5  <=>  optipng -f0,3-5
optipng -zs0 -zs1 -zs2,3  <=>  optipng -zs0-3

الگوریتم بهینه‌سازی PNG از مراحل زیر تشکیل شده است:

1.کاهش عمق بیت، نوع رنگ و پالت رنگ تصویر. این مرحله ممکن است اندازهٔ تصویر فشرده‌نشده را کاهش دهد، که به طور غیرمستقیم می‌تواند اندازهٔ تصویر فشرده‌شده (یعنی اندازهٔ پروندهٔ خروجی PNG) را کاهش دهد.
2.اجرای مجموعه‌ای از روش‌ها و راهبردهای فشرده‌سازی و انتخاب پارامترهای فشرده‌سازی که کوچک‌ترین پروندهٔ خروجی را تولید کنند.
3.ذخیرهٔ تمام محتویات IDAT در یک قطعهٔ واحد، که سربار ناشی از سرایندها و CRCهای تکراری IDAT را از بین می‌برد.
4.تنظیم اندازهٔ پنجرهٔ zlib درون IDAT به کمینه‌ای که بر نسبت فشرده‌سازی تأثیری نگذارد، که نیازمندی‌های حافظهٔ رمزگشاهای PNG را کاهش می‌دهد.

لازم نیست همهٔ مراحل بالا اجرا شوند. رفتار برنامه به پرونده‌های ورودی واقعی و گزینه‌های کاربر بستگی دارد.

مرحلهٔ ۱ می‌تواند با استفاده از گزینه‌های عدم کاهش شامل -nb، -nc، -np و -nx سفارشی‌سازی شود. مرحلهٔ ۲ می‌تواند از طریق گزینهٔ -o سفارشی‌سازی شده و با استفاده از گزینه‌های -zc، -zm، -zs و -zw به‌دقت تنظیم شود. مرحلهٔ ۳ همیشه اجرا می‌شود. مرحلهٔ ۴ تنها زمانی اجرا می‌شود که یک IDAT جدید در حال ایجاد باشد، و می‌تواند از طریق گزینهٔ -zw به‌دقت تنظیم شود.

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

optipng file.png      # سرعت پیش‌فرض
optipng -o5 file.png  # کند
optipng -o7 file.png  # بسیار کند

کاهش‌های بدون‌افت تصویر به‌طور کامل پیاده‌سازی نشده‌اند. (این موضوع بر یکپارچگی پرونده‌های خروجی تأثیری ندارد.) بخش‌های پیاده‌سازی‌نشده عبارتند از:

•کاهش‌های پالت رنگ تنها به‌صورت جزئی پیاده‌سازی شده‌اند.
•کاهش عمق بیت به کمتر از ۸، برای تصاویر مقیاس خاکستری، هنوز پیاده‌سازی نشده است.

در حال حاضر کدگذاری تصاویری که مجموع اندازهٔ IDAT آن‌ها از ۲ گیگابایت بیشتر باشد، پشتیبانی نمی‌شود.

پشتیبانی از TIFF به تصاویر فشرده‌نشده و سازگار با PNG (شامل مقیاس خاکستری، RGB و RGBA) محدود است.

فراداده‌ها از قالب‌های تصویر خارجی وارد نمی‌شوند.

هیچ پشتیبانی‌ای از لوله‌ها (pipes)، جریان‌ها (streams)، صفت‌های پروندهٔ گسترش‌یافته یا فهرست‌های کنترل دسترسی وجود ندارد..SH "همچنین ببینید (SEE ALSO)"

png(5), libpng(3), zlib(3), pngcrush(1), pngrewrite(1).

فایل‌های تولیدشده توسط OptiPNG با جدیدترین استاندارد PNG («نسخه دوم PNG») و همچنین جدیدترین پیش‌نویس استاندارد PNG («نسخه سوم PNG») سازگار هستند.

•Portable Network Graphics (PNG) Specification, Second Edition.
W3C Recommendation 10 November 2003; ISO/IEC IS 15948:2003 (E).
https://www.w3.org/TR/2003/REC-PNG-20031110
•Portable Network Graphics (PNG) Specification, Third Edition.
W3C Proposed Recommendation 15 May 2025.
https://www.w3.org/TR/2025/PR-png-3-20250515

برنامه OptiPNG توسط Cosmin Truta نوشته شده است و نگهداری می‌شود.

این صفحه راهنما در ابتدا توسط Nelson A. de Oliveira برای پروژه Debian نوشته شده بود. این راهنما بعداً توسط Cosmin Truta به‌روزرسانی شد و اکنون بخشی از توزیع OptiPNG است.

2025-05-20 optipng 7.9.1