Cwebp

שם

cwebp – דחיסת קובץ תמונה לקובץ WebP

תקציר

cwebp [options] input_file -o output_file.webp

תיאור

cwebp דוחס תמונה באמצעות פורמט WebP. פורמט הקלט יכול להיות PNG,‏ JPEG,‏ TIFF,‏ WebP או דגימות Y'CbCr גולמיות. הערה: אין תמיכה בקובצי PNG ו-WebP מונפשים.

אפשרויות

האפשרויות הבסיסיות הן:

-o string
מציינים את השם של קובץ ה-WebP בפלט. אם השדה הזה לא יצוין, המערכת תבצע דחיסה ותדווח רק על נתונים סטטיסטיים. שימוש בסימן "-" בתור שם הפלט יפנה את הפלט אל 'stdout'.
-- string
מציינים במפורש את קובץ הקלט. האפשרות הזאת שימושית אם מזינים הקובץ מתחיל ב-'-' למשל. האפשרות הזו חייבת להופיע last. המערכת תתעלם מכל אפשרות אחרת שתבחרו לאחר מכן.
-h, -help
סיכום קצר של השימוש
-H, -longhelp
סיכום של כל האפשרויות האפשריות
-version
מדפיסים את מספר הגרסה (בפורמט major.minor.revision) ויוצאים.
-lossless
קידוד התמונה ללא אובדן נתונים. בתמונות עם אזור שקוף לחלוטין: ערכי פיקסלים בלתי נראים (R/G/B או Y/U/V) יישמרו רק אם נעשה שימוש באפשרות -exact.
-near_lossless int
ציון רמת העיבוד המקדים של התמונות ללא אובדן נתונים כמעט. האפשרות הזו מתאימה פיקסלים לדחיסת נתונים, אבל ההשפעה שלהם על הרכיבים החזותיים באיכות גבוהה. הוא מפעיל באופן אוטומטי את מצב דחיסת הנתונים ללא אובדן נתונים. הטווח הוא מ-0 (עיבוד מקסימלי מראש) עד 100 (ללא עיבוד מראש, ברירת המחדל). הערך הטיפוסי הוא בסביבות 60. חשוב לדעת שבמקרים מסוימים, שימוש בקידוד עם אובדן נתונים (lossy) עם -q 100 יכול להניב תוצאות טובות יותר.
-q float

צריך לציין את גורם הדחיסה לערוצי RGB בין 0 ל-100. ערך ברירת המחדל הוא 75.

במקרה של דחיסת נתונים עם אובדן נתונים (ברירת המחדל), גורם קטן יוצר קובץ קטן יותר באיכות נמוכה יותר. כדי לקבל את האיכות הטובה ביותר, צריך להשתמש בערך 100.

במקרה של דחיסה ללא אובדן נתונים (שצוינה באמצעות האפשרות -lossless), גורם קטן מאפשר מהירות דחיסה מהירה יותר, אבל יוצר קובץ גדול יותר. דחיסה מקסימלית מתאפשרת באמצעות ערך של 100.

-z int

מפעילים את מצב הדחיסה lossless ברמה שצוינה בין 0 ל-9, כאשר רמה 0 היא המהירה ביותר ורמה 9 היא האיטית ביותר. מצב מהיר יוצרים קבצים גדולים יותר מאשר קבצים איטיים יותר. ברירת מחדל טובה היא -z 6. האפשרות הזו היא למעשה קיצור דרך להגדרות מוגדרות מראש של איכות ושל שיטת ההמרה. אם בהמשך ייעשה שימוש באפשרויות -q או -m, הן: לשלול את ההשפעה של אפשרות זו.

-alpha_q int

ציון גורם הדחיסה לדחיסת אלפא בין 0 לבין 100. כדי לקבל דחיסת אלפא ללא אובדן נתונים, צריך להשתמש בערך 100, ואילו ערכים נמוכים יותר יגרמו לדחיסת אלפא עם אובדן נתונים. ברירת המחדל היא 100

-preset string

לציין קבוצה של פרמטרים מוגדרים מראש שיתאימו לסוג מסוים של בחומר המקור. הערכים האפשריים הם: default, photo, picture, drawing, icon, text.

מכיוון שהפרמטר -preset מחליף את הפרמטרים האחרים (מלבד -q 1), רצוי שהאפשרות הזאת תופיע ראשונה לפי סדר ארגומנטים.

-m int

מציינים את שיטת הדחיסה שבה רוצים להשתמש. הפרמטר הזה שולט במסחר בין מהירות הקידוד לבין הגודל והאיכות של הקובץ הדחוס. הערכים האפשריים נעים בין 0 לבין 6. ערך ברירת המחדל הוא 4. בדרגה גבוהה יותר נעשה שימוש בערכים האלה, המקודד ישקיע יותר זמן בבדיקות אפשרויות הקידוד ולהחליט על שיפור האיכות. ערך נמוך יותר יכול להוביל לזמן עיבוד מהיר יותר, אבל הקובץ יהיה גדול יותר ואיכות הדחיסה תהיה נמוכה יותר.

-crop x_position y_position width height

חתוך את המקור למלבן עם הפינה הימנית העליונה בקואורדינטות (x_position, y_position) ובגודל width x height. אזור החיתוך חייב להיכלל במלואו בתוך ריבוע המקור. הערה: החיתוך מוחל לפני כל הגדלה באחוזים.

-resize width height

משנים את הגודל של המקור למלבן בגודל width x height. אם אחד (אבל לא שניהם) מהפרמטרים של רוחב או גובה הוא 0, הערך יחושב תוך שמירה על יחס הגובה-רוחב. הערה: שינוי התצוגה (scaling) מתבצע אחרי החיתוך.

-mt

אם אפשר, כדאי להשתמש בריבוי שרשורים לקידוד.

-low_memory

כדי לצמצם את השימוש בזיכרון של קידוד עם אובדן נתונים, שומרים פי ארבעה מהגודל המכווץ (בדרך כלל). הפעולה הזו תאט את קצב ההמרה, והפלט יהיה שונה במעט בגודל ובעיוות. הדגל הזה תקף רק לשיטות 3 ואילך, והוא מושבת כברירת מחדל. חשוב לדעת שללא הדגל הזה יהיו השפעות משניות על מקור הנתונים: הוא מאלץ תכונות מסוימות של מקור הנתונים, כמו מספר המחיצות (הוא מאלץ את הערך 1). חשוב לדעת שכשמשתמשים באפשרות הזו, cwebp מדפיס דוח מפורט יותר של גודל מקור הנתונים.

אפשרויות עם אובדן נתונים

אפשרויות אלה יעילות רק בעת ביצוע קידוד איבוד נתונים (ברירת המחדל, עם או ללא אלפא).

-size int
יש לציין גודל יעד (בבייטים) כדי לנסות את פוטנציאל החשיפה עבור הגודל הדחוס הפלט. המדחס יבצע מספר מעברים של קידוד חלקי כדי להיות קרובים ככל האפשר ליעד. אם גם -size וגם נעשה שימוש ב--psnr, הערך של -size יגבר.
-psnr float
מציינים יעד PSNR (ב-dB) כדי לנסות להגיע לפלט הדחוס ולשפר את פוטנציאל החשיפה. המדחס יבצע מספר העברתים של קידוד חלקי כדי לקבל קרובים ככל האפשר ליעד הזה. אם נעשה שימוש גם ב--size וגם ב--psnr, הערך של -size יהיה הקובע.
-pass int
הגדרת מספר מקסימלי של כרטיסים לשימוש במהלך הדיכוטומיה שמשמשת את האפשרויות -size או -psnr. הערך המקסימלי הוא 10, ברירת המחדל היא 1. אם השתמשתם באפשרויות -size או -psnr אבל לא ציינת את -pass, המערכת תשתמש בערך ברירת המחדל של 6 חזרות. אם -pass צוין, אבל לא -size או -psnr, ייעשה שימוש ביעד PSNR של 40dB.
-af
מפעיל את המסנן האוטומטי. האלגוריתם הזה יקדיש זמן נוסף לביצוע אופטימיזציה של עוצמת הסינון כדי להגיע לאיכות מאוזנת.
-jpeg_like
משנים את מיפוי הפרמטרים הפנימיים כך שיתאים בצורה טובה יותר לגודל הצפוי של דחיסת JPEG. בדרך כלל הדגל הזה יוצר קובץ פלט בגודל דומה לזה של קובץ ה-JPEG המקביל (עם אותה הגדרה של -q), אבל עם פחות עיוות חזותי.

אפשרויות מתקדמות:

-f int
ציון העוצמה של המסנן לביטול החסימה, בין 0 (ללא סינון) ו-100 (סינון מקסימלי). ערך של 0 ישבית את כל הסינון. ערך גבוה יותר יגביר את העוצמה של תהליך הסינון שהוחל אחרי פענוח התמונה. ככל שהערך גבוה יותר, כך התמונה תהיה חלקה יותר. הערכים האופייניים הם בדרך כלל בטווח של 20 עד 50.
-sharpness int
כדאי לציין את חדות הסינון (אם משתמשים בה). הטווח הוא 0 (החדה ביותר) עד 7 (הפחות חדה). ברירת המחדל היא 0.
-strong
שימוש בסינון חזק (אם נעשה שימוש בסינון באמצעות האפשרות -f). סינון חזק מופעל כברירת מחדל.
-nostrong
להשבית סינון חזק (אם נעשה שימוש בסינון הודות ל-f ולהשתמש בסינון פשוט.
-sharp_yuv
שימוש בהמרה מדויקת וחדה יותר של RGB ל-YUV. חשוב לזכור שהתהליך הזה איטי יותר מההמרה המהירה שמוגדרת כברירת מחדל מ-RGB ל-YUV.
-sns int
ציון האמפליטודה של עיצוב הרעשים המרחבי. עיבוד רעשי שטח (או sns בקיצור) הוא אוסף כללי של אלגוריתמים מובנים שמשמשים להחלטה באילו אזורים בתמונה יש להשתמש בפחות ביטים יחסית, ובאילו אזורים אחרים כדאי להעביר את הביטים האלה בצורה טובה יותר. הטווח האפשרי הוא מ-0 (האלגוריתם מושבת) עד 100 (ההשפעה המקסימלית). ערך ברירת המחדל הוא 50
-segments int
לשנות את מספר המחיצות לשימוש במהלך הפילוח של ה-sns באלגוריתם כלשהו. הפלחים צריכים להיות בטווח שבין 1 ל-4. ערך ברירת המחדל הוא 4. לאפשרות הזו אין השפעה על שיטות 3 ואילך, אלא אם -low_memory בשימוש.
-partition_limit int
פגיעה באיכות על ידי הגבלת מספר הביטים שבהם משתמשים חלק מהמקרו-בלוקים. הטווח הוא 0 (ללא פגיעה, ברירת המחדל) עד 100 (פגיעה מלאה). הערכים השימושיים הם בדרך כלל כ-30-70 לתמונות גדולות במידה בינונית. לחשבון בפורמט VP8, למחיצת הבקרה לכאורה יש מגבלה של 512k, משמש לאחסון המידע הבא: האם המאקרו בלוק שדלגו עליו, לאיזה מקטע הוא שייך, בין אם הוא מקודד בפורמט Intra 4x4 או בגודל 16x16, ולבסוף את מצבי החיזוי שבהם צריך להשתמש בכל אחד גושי משנה. בתמונה גדולה מאוד, 512k משאירים מקום רק לכמה ביטים לכל מק"ט בגודל 16x16. המינימום המוחלט הוא 4 ביטים לכל microblock. מידע על דילוג, על פלח ועל מצב יכול להשתמש בכמעט כל 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 משפיעות גם על ההחלטות של המקודד ועל היכולת שלו לעמוד במגבלה הזו.

אפשרויות רישום

האפשרויות האלה קובעות את רמת הפלט:

-v
אפשר להדפיס מידע נוסף (במיוחד את זמן הקידוד).
-print_psnr
Compute ודוח ממוצע של PSNR (יחס שיא – אות לרעש).
-print_ssim
חישוב של SSIM ממוצע ודיווח עליו (מדד דמיון מבני: https://en.wikipedia.org/wiki/SSIM לפרטים נוספים).
-print_lsim
חישוב של מדד דמיון מקומי ודיווח עליו (סכום השגיאה הנמוכה ביותר מבין את שכני הפיקסלים שנמצאים במיקום הנכון).
-progress
דיווח על התקדמות ההקידוד באחוזים.
-quiet
לא להדפיס דבר.
-short
הדפסת מידע קצר רק (גודל קובץ פלט ו-PSNR) לבדיקה למטרות עסקיות.
-map int
פלט של מפת ASCII נוספת של פרטי קידוד. ערכים אפשריים במפה נע בין 1 ל-6. האפשרות הזו מיועדת רק לצורך ניפוי באגים.

אפשרויות נוספות

האפשרויות המתקדמות יותר הן:

-s width height
מציינים שקובץ הקלט מורכב למעשה מדגימות גולמיות של Y'CbCr בהתאם להמלצה של ITU-R BT.601, בפורמט לינארי 4:2:0. מישור הלימה הוא בגודל width x height.
-pre int
לציין כמה שלבים לפני העיבוד. שימוש בערך של 2 יפעיל דימום פסאודו אקראי תלוי-איכות במהלך המרת RGBA->YUVA (דחיסה לוסית בלבד).
-alpha_filter string
מציינים את שיטת הסינון החזוי של מישור האלפא. אחד מ- none, fast או best, בסדר עולה. ברירת המחדל היא fast. באופן פנימי, סינון האלפא מתבצע באמצעות ארבע תחזיות אפשריות (ללא, אופקית, אנכית, שיפוע). best ינסה כל אחד מהמצבים בתורו ולבחור את המצב שנותן למצב גודל. מצב fast פשוט ינסה ליצור ניחוש עדיפות בלי לבדוק את כל המצבים.
-alpha_method int
מציינים את האלגוריתם שמשמש לדחיסת אלפא: 0 או 1. האלגוריתם 0 מציין שאין דחיסה, והאלגוריתם 1 משתמש בפורמט WebP lossless לדחיסה. ערך ברירת המחדל הוא 1.
-exact
שימור ערכי RGB באזור שקוף. ברירת המחדל היא מושבתת, כדי לשפר את היכולת לדחוס את הקובץ.
-blend_alpha int
אפשרות זו תמזג את ערוץ האלפא (אם קיים) עם המקור באמצעות צבע הרקע שצוין בהקסדצימלי בתור 0xrrggbb. לאחר מכן, ערוץ האלפא מוחזר לערך האטום 255.
-noalpha
בחירת האפשרות הזו תגרום לביטול השימוש בערוץ האלפא.
-hint string
ציון הרמז לגבי סוג תמונת הקלט. הערכים האפשריים הם: photo, picture או graph.
-metadata string

רשימה מופרדת בפסיקים של מטא-נתונים להעתקה מהקלט לפלט, אם הם קיימים. הערכים התקפים: all, none, exif, icc, xmp. ערך ברירת המחדל הוא none.

שימו לב שלא כל פורמט קלט יתמוך בכל השילובים.

-noasm

השבתת כל האופטימיזציות של ההרכבה.

באגים

דוגמאות

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/

הדף הידני הזה נכתב לפרויקט Debian (ויכול להיות בשימוש על ידי אחרים).