CWEBP(1) General Commands Manual CWEBP(1)

cwebp - فشرده‌سازی یک فایل تصویری به یک فایل WebP

cwebp [options] input_file -o output_file.webp

این صفحه راهنما دستور cwebp را توضیح می‌دهد.

دستور cwebp یک تصویر را با استفاده از قالب WebP فشرده می‌کند. قالب ورودی می‌تواند PNG، JPEG، TIFF، WebP یا نمونه‌های خام Y'CbCr باشد. نکته: فایل‌های متحرک PNG و WebP پشتیبانی نمی‌شوند.

گزینه‌های پایه عبارتند از:

نام فایل خروجی WebP را مشخص می‌کند. در صورت عدم ذکر، cwebp فشرده‌سازی را انجام می‌دهد اما تنها آمار را گزارش می‌کند. استفاده از «-» به عنوان نام خروجی، خروجی را به 'stdout' هدایت می‌کند.
-- string
فایل ورودی را به طور صریح مشخص می‌کند. این گزینه زمانی مفید است که برای نمونه، نام فایل ورودی با یک «-» شروع شود. این گزینه باید در آخرین جایگاه قرار گیرد. هر گزینه دیگری پس از آن نادیده گرفته خواهد شد.
خلاصه‌ای کوتاه از نحوه استفاده.
خلاصه‌ای از تمام گزینه‌های ممکن.
شماره نسخه را (به صورت major.minor.revision) چاپ کرده و خارج می‌شود.
تصویر را بدون هیچ‌گونه اتلافی کدگذاری می‌کند. برای تصاویر دارای ناحیه کاملاً شفاف، مقادیر پیکسل‌های نامرئی (R/G/B یا Y/U/V) تنها در صورتی حفظ خواهند شد که از گزینه -exact استفاده شود.
سطح پیش‌پردازش تصویر نزدیک به بدون‌اتلاف (near-lossless) را تعیین می‌کند. این گزینه مقادیر پیکسل‌ها را برای کمک به فشرده‌سازی تنظیم می‌کند، اما کمترین اثر را روی کیفیت بصری دارد. این گزینه حالت فشرده‌سازی بدون‌اتلاف را به طور خودکار فعال می‌کند. محدوده آن از 0 (حداکثر پیش‌پردازش) تا 100 (بدون پیش‌پردازش، پیش‌فرض) است. مقدار معمول در حدود 60 است. توجه داشته باشید که حالت بااتلاف با -q 100 گاهی اوقات می‌تواند نتایج بهتری ایجاد کند.
ضریب فشرده‌سازی برای کانال‌های RGB را بین 0 تا 100 مشخص می‌کند. مقدار پیش‌فرض 75 است.
در صورت فشرده‌سازی بااتلاف (پیش‌فرض)، یک ضریب کوچک فایلی کوچک‌تر با کیفیت پایین‌تر تولید می‌کند. بهترین کیفیت با استفاده از مقدار 100 حاصل می‌شود.
در صورت فشرده‌سازی بدون‌اتلاف (مشخص‌شده با گزینه -lossless)، ضریب کوچک‌تر سرعت فشرده‌سازی سریع‌تری را فراهم می‌سازد، اما فایل بزرگ‌تری تولید می‌کند. حداکثر فشرده‌سازی با استفاده از مقدار 100 به دست می‌آید.
حالت فشرده‌سازی lossless (بدون‌اتلاف) را با سطح مشخص‌شده بین 0 تا 9 فعال می‌کند، که در آن سطح 0 سریع‌ترین و 9 کندترین است. حالت سریع اندازه فایل بزرگ‌تری نسبت به حالت‌های کندتر تولید می‌کند. یک مقدار پیش‌فرض مناسب -z 6 است. این گزینه در واقع یک میان‌بر برای برخی تنظیمات از پیش تعریف‌شده کیفیت و روش است. اگر گزینه‌های -q یا -m پس از آن استفاده شوند، اثر این گزینه باطل خواهد شد.
ضریب فشرده‌سازی برای فشرده‌سازی آلفا را بین 0 تا 100 مشخص می‌کند. فشرده‌سازی بدون‌اتلاف آلفا با مقدار 100 حاصل می‌شود، در حالی که مقادیر کمتر منجر به فشرده‌سازی بااتلاف می‌شوند. مقدار پیش‌فرض 100 است.
مجموعه‌ای از پارامترهای از پیش تعریف‌شده را متناسب با نوع خاصی از تصویر ورودی مشخص می‌کند. مقادیر ممکن عبارتند از: default، photo، picture، drawing، icon، text. از آنجا که -preset مقادیر سایر پارامترها را (به جز -q) بازنویسی می‌کند، این گزینه ترجیحاً باید در ابتدای ترتیب آرگومان‌ها قرار گیرد.
روش فشرده‌سازی مورد استفاده را مشخص می‌کند. این پارامتر مصالحه میان سرعت کدگذاری و اندازه و کیفیت فایل فشرده‌شده را کنترل می‌کند. مقادیر ممکن بین 0 تا 6 متغیر هستند. مقدار پیش‌فرض 4 است. با مقادیر بالاتر، کدگذار زمان بیشتری را صرف بررسی احتمالات کدگذاری اضافی و تصمیم‌گیری درباره بهبود کیفیت خواهد کرد. مقدار پایین‌تر می‌تواند منجر به زمان پردازش سریع‌تر به بهای اندازه فایل بزرگ‌تر و کیفیت فشرده‌سازی پایین‌تر شود.
تصویر مبدأ را به یک مستطیل با گوشه بالا-چپ در مختصات (x_position, y_position) و ابعاد width در height برش می‌دهد. این ناحیه برش باید به طور کامل در محدوده مستطیل تصویر مبدأ قرار داشته باشد. نکته: برش پیش از هرگونه مقیاس‌بندی اعمال می‌شود.
تصویر مبدأ را به مستطیلی با ابعاد width در height تغییر اندازه می‌دهد. اگر یکی از پارامترهای width یا height (نه هر دو) برابر 0 باشد، مقدار با حفظ نسبت تصویر (aspect-ratio) محاسبه خواهد شد. نکته: مقیاس‌بندی پس از برش اعمال می‌شود.
رفتار گزینه -resize را تعیین می‌کند. مقادیر ممکن عبارتند از: down_only، up_only، always (پیش‌فرض). مقدار down_only تنها در صورتی از مقادیر مشخص‌شده توسط -resize استفاده می‌کند که عرض یا ارتفاع ورودی بزرگ‌تر از ابعاد داده‌شده باشد. به همین ترتیب، up_only تنها در صورتی تغییر اندازه می‌دهد که عرض یا ارتفاع ورودی کوچک‌تر از ابعاد داده‌شده باشد.
در صورت امکان، از چندریسمانی (multi-threading) برای کدگذاری استفاده می‌کند.
میزان مصرف حافظه در کدگذاری بااتلاف را (معمولاً) با ذخیره چهار برابر اندازه فشرده‌شده کاهش می‌دهد. این کار سرعت کدگذاری را کاهش داده و اندازه خروجی و اعوجاج آن را اندکی تغییر می‌دهد. این پرچم فقط برای روش‌های 3 به بالا مؤثر است و به طور پیش‌فرض غیرفعال است. توجه داشته باشید که غیرفعال گذاشتن این پرچم اثرات جانبی بر جریان بیت (bitstream) دارد: برخی ویژگی‌های جریان بیت مانند تعداد بخش‌ها را اجبار می‌کند (مجبور به 1). توجه داشته باشید هنگام استفاده از این گزینه، گزارش دقیق‌تری از اندازه جریان بیت توسط cwebp چاپ می‌شود.

این گزینه‌ها تنها هنگام انجام کدگذاری بااتلاف (حالت پیش‌فرض، با یا بدون آلفا) مؤثر هستند.

یک اندازه هدف (به بایت) برای دستیابی به خروجی فشرده‌شده تعیین می‌کند. فشرده‌ساز چندین دور کدگذاری جزئی انجام می‌دهد تا حد امکان به این هدف نزدیک شود. اگر هم از -size و هم از -psnr استفاده شود، مقدار -size اولویت خواهد داشت.
یک نسبت سیگنال به نویز اوج (PSNR) هدف (به دسی‌بل - dB) برای دستیابی به خروجی فشرده تعیین می‌کند. فشرده‌ساز چندین دور کدگذاری جزئی انجام می‌دهد تا حد امکان به این هدف نزدیک شود. اگر هر دو گزینه -size و -psnr استفاده شوند، مقدار -size اولویت خواهد داشت.
حداکثر تعداد گذرها (pass) را برای استفاده در جستجوی دودویی گزینه‌های -size یا -psnr تنظیم می‌کند. حداکثر مقدار 10 و پیش‌فرض 1 است. اگر گزینه‌های -size یا -psnr استفاده شوند اما -pass مشخص نشده باشد، مقدار پیش‌فرض '6' گذر استفاده خواهد شد. اگر -pass مشخص شود اما هیچ‌کدام از -size یا -psnr مشخص نشوند، مقدار هدف PSNR برابر با 40dB در نظر گرفته می‌شود.
بازه مجاز برای ضریب کیفیت را مشخص می‌کند. این گزینه به‌ویژه هنگام استفاده از روش چندگذره (گزینه‌های -size یا -psnr) مفید است. پیش‌فرض 0 100 است. اگر ضریب کیفیت خارج از این بازه باشد، محدود (clamp) می‌شود. مقدار کمینه باید کمتر یا مساوی با مقدار بیشینه باشد.
فیلتر خودکار (auto-filter) را فعال می‌کند. این الگوریتم زمان بیشتری را صرف بهینه‌سازی قدرت فیلتر برای رسیدن به یک کیفیت متوازن خواهد کرد.
نگاشت پارامترهای داخلی را تغییر می‌دهد تا با اندازه مورد انتظار در فشرده‌سازی JPEG تطابق بهتری داشته باشد. این پرچم معمولاً فایل خروجی با اندازه‌ای مشابه معادل JPEG آن (برای تنظیم یکسان -q) اما با اعوجاج بصری کمتر تولید می‌کند.
گزینه‌های پیشرفته:
قدرت فیلتر حذف بلوک‌ها (deblocking filter) را بین 0 (بدون فیلتر) و 100 (حداکثر فیلتر) مشخص می‌کند. مقدار 0 هرگونه فیلتر را غیرفعال می‌کند. مقدار بالاتر، قدرت فرایند فیلتر را که پس از رمزگشایی تصویر اعمال می‌شود، افزایش می‌دهد. هر چه مقدار بالاتر باشد، تصویر هموارتر و نرم‌تر به نظر می‌رسد. مقادیر معمول عموماً در محدوده 20 تا 50 هستند.
میزان تیزی و وضوح (sharpness) فیلتر را (در صورت استفاده) مشخص می‌کند. محدوده از 0 (بیشترین وضوح) تا 7 (کمترین وضوح) است. پیش‌فرض 0 است.
از فیلتر قدرتمند استفاده می‌کند (اگر به لطف گزینه -f از فیلتر استفاده شود). فیلتر قدرتمند به طور پیش‌فرض فعال است.
فیلتر قدرتمند را غیرفعال کرده (اگر به لطف گزینه -f از فیلتر استفاده شود) و به جای آن از فیلتر ساده استفاده می‌کند.
از تبدیل دقیق‌تر و شفاف‌تر RGB->YUV استفاده می‌کند. توجه داشته باشید که این فرایند کندتر از تبدیل پیش‌فرض و سریع 'fast' RGB->YUV است.
دامنه شکل‌دهی نوفه فضایی (spatial noise shaping) را مشخص می‌کند. شکل‌دهی نوفه فضایی (یا به اختصار sns) به مجموعه‌ای کلی از الگوریتم‌های توکار اشاره دارد که برای تصمیم‌گیری در این مورد استفاده می‌شوند که کدام ناحیه از تصویر باید از بیت‌های نسبتاً کمتری استفاده کند، و این بیت‌ها به کدام بخش‌ها منتقل شوند تا کیفیت بهتری حاصل شود. محدوده ممکن از 0 (الگوریتم خاموش) تا 100 (حداکثر اثر) است. مقدار پیش‌فرض 50 است.
تعداد بخش‌های مورد استفاده در طول قطعه‌بندی (segmentation) الگوریتم sns را تغییر می‌دهد. بخش‌ها باید در محدوده 1 تا 4 باشند. مقدار پیش‌فرض 4 است. این گزینه برای روش‌های 3 به بالا هیچ اثری ندارد، مگر اینکه از -low_memory استفاده شود.
کیفیت را با محدود کردن تعداد بیت‌های استفاده‌شده توسط برخی ماکروبلوک‌ها کاهش می‌دهد. محدوده از 0 (بدون کاهش کیفیت، پیش‌فرض) تا 100 (کاهش کیفیت کامل) است. مقادیر کاربردی معمولاً برای تصاویر نسبتاً بزرگ حدود 30-70 هستند. در قالب VP8، بخش کنترل (control partition) دارای محدودیت 512 کیلوبایتی است و برای ذخیره این اطلاعات به کار می‌رود: آیا ماکروبلوک نادیده گرفته شده است (skip)، به کدام قطعه تعلق دارد، آیا به صورت حالت درون‌تصویری (intra) 4x4 کدگذاری شده است یا 16x16، و در نهایت حالت‌های پیش‌بینی مورد استفاده برای هر یک از زیربلوک‌ها. برای یک تصویر بسیار بزرگ، 512 کیلوبایت تنها فضایی برای چند بیت به ازای هر ماکروبلوک 16x16 باقی می‌گذارد. حداقل مطلق 4 بیت برای هر ماکروبلوک است. اطلاعات نادیده‌گیری، قطعه و حالت می‌توانند تقریباً تمام این 4 بیت را مصرف کنند (اگرچه این مورد نادر است)، که این برای تصاویر بسیار بزرگ مشکل‌ساز است. ضریب partition_limit دفعات استفاده از پرهزینه‌ترین حالت از نظر مصرف بیت (intra 4x4) را کنترل می‌کند. این گزینه زمانی مفید است که محدودیت 512k پر شود و این پیام نمایش یابد: Error code: 6 (PARTITION0_OVERFLOW: Partition #0 is too big to fit 512k). اگر استفاده از -partition_limit برای برآورده کردن قید 512k کافی نباشد، باید از قطعات کمتری استفاده کرد تا بیت‌های سرایند بیشتری به ازای هر ماکروبلوک ذخیره شود. گزینه -segments را ببینید. توجه داشته باشید که گزینه‌های -m و -q نیز بر تصمیمات کدگذار و توانایی آن در برخورد با این محدودیت اثر می‌گذارند.

این گزینه‌ها سطح خروجی را کنترل می‌کنند:

اطلاعات اضافی (به‌ویژه زمان کدگذاری) را چاپ می‌کند.
میانگین PSNR (نسبت سیگنال به نویز اوج) را محاسبه و گزارش می‌کند.
میانگین SSIM (معیار شباهت ساختاری، برای جزئیات بیشتر https://en.wikipedia.org/wiki/SSIM را ببینید) را محاسبه و گزارش می‌کند.
معیار شباهت محلی (مجموع کمترین خطا در بین پیکسل‌های هم‌مکان همسایه) را محاسبه و گزارش می‌کند.
پیشرفت کدگذاری را به درصد گزارش می‌کند.
هیچ چیزی چاپ نمی‌کند.
تنها اطلاعات کوتاهی (اندازه فایل خروجی و PSNR) را برای اهداف آزمایشی چاپ می‌کند.
یک نقشه اسکی (ASCII-map) اضافی از اطلاعات کدگذاری خروجی می‌دهد. مقادیر ممکن نقشه از 1 تا 6 متغیر است. این گزینه فقط برای کمک به اشکال‌زدایی در نظر گرفته شده است.

گزینه‌های پیشرفته‌تر عبارتند از:

مشخص می‌کند که فایل ورودی در واقع شامل نمونه‌های خام Y'CbCr بر اساس استاندارد ITU-R BT.601، در قالب خطی 4:2:0 است. صفحه روشنایی (luma) دارای اندازه width در height است.
برخی مراحل پیش‌پردازش را مشخص می‌کند. استفاده از مقدار '2' باعث ایجاد دیترینگ (dithering) شبه‌تصادفی وابسته به کیفیت در طول تبدیل RGBA->YUVA می‌شود (فقط در فشرده‌سازی بااتلاف).
روش فیلتر پیش‌بینانه را برای صفحه آلفا مشخص می‌کند. یکی از مقادیر 'none'، 'fast' یا 'best'، به ترتیب افزایش پیچیدگی و کندی. پیش‌فرض 'fast' است. در داخل برنامه، فیلتر آلفا با استفاده از چهار پیش‌بینی ممکن (none، horizontal، vertical، gradient) انجام می‌شود. حالت 'best' هر حالت را به نوبت آزمایش کرده و موردی را که اندازه کوچک‌تری می‌دهد انتخاب می‌کند. حالت 'fast' صرفاً سعی می‌کند بدون آزمایش همه حالت‌ها، یک حدس اولیه بزند.
الگوریتم مورد استفاده برای فشرده‌سازی آلفا را مشخص می‌کند: 0 یا 1. الگوریتم 0 به معنی عدم فشرده‌سازی است، 1 از قالب بدون‌اتلاف WebP برای فشرده‌سازی استفاده می‌کند. پیش‌فرض 1 است.
مقادیر RGB را در نواحی شفاف حفظ می‌کند. پیش‌فرض برای کمک به فشرده‌سازی، غیرفعال است.
این گزینه کانال آلفا را (در صورت وجود) با استفاده از رنگ پس‌زمینه‌ای که به صورت شانزده‌شانزدهی با 0xrrggbb مشخص شده است، با مبدأ ترکیب می‌کند. کانال آلفا سپس به مقدار مات 255 بازنشانی می‌شود.
استفاده از این گزینه، کانال آلفا را نادیده می‌گیرد و حذف می‌کند.
راهنمایی درباره نوع تصویر ورودی ارائه می‌دهد. مقادیر ممکن عبارتند از: photo، picture یا graph.
فهرستی با کاما جدا شده از فراداده‌ها برای کپی از ورودی به خروجی (در صورت وجود). مقادیر معتبر: all، none، exif، icc، xmp. پیش‌فرض none است.

نکته: ممکن است هر قالب ورودی از تمام این ترکیب‌ها پشتیبانی نکند.

همه بهینه‌سازی‌های زبان اسمبلی را غیرفعال می‌کند.

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

در صورت بروز خطا، cwebp با مقدار ثابت C یعنی EXIT_FAILURE خارج می‌شود. این مقدار معمولاً یک است.

cwebp -q 50 -lossless picture.png -o picture_lossless.webp
cwebp -q 70 picture_with_alpha.png -o picture_with_alpha.webp
cwebp -sns 70 -f 50 -size 60000 picture.png -o picture.webp
cwebp -o picture.webp -- ---picture.png

دستور cwebp بخشی از libwebp است و توسط تیم WebP نوشته شده است.
آخرین درخت منبع در نشانی زیر در دسترس است: https://chromium.googlesource.com/webm/libwebp

این صفحه راهنما توسط Pascal Massimino <pascal.massimino@gmail.com> برای پروژه دبیان نوشته شده است (و ممکن است توسط دیگران نیز استفاده شود).

لطفاً تمام باگ‌ها را به سامانه ردیابی مشکلات گزارش دهید: https://issues.webmproject.org
وصله‌ها با استقبال پذیرفته می‌شوند! برای شروع به این صفحه مراجعه کنید: https://www.webmproject.org/code/contribute/submitting-patches

dwebp(1), gif2webp(1)
لطفاً برای اطلاعات بیشتر به https://developers.google.com/speed/webp مراجعه کنید.

April 10, 2025