Cwebp

שם

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

תקציר

cwebp [options] input_file -o output_file.webp

תיאור

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

אפשרויות

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

-o string
יש לציין את השם של קובץ הפלט WebP. אם לא צוין מספר, cwebp יבצע דחיסה אבל רק ידווח על נתונים סטטיסטיים. שימוש בתו '-' כשם הפלט יפנה את הפלט אל 'stdout'.
-- string
יש לציין את קובץ הקלט באופן מפורש. האפשרות הזו שימושית אם למשל קובץ הקלט מתחיל ב- '-'. האפשרות הזו חייבת להופיע בתור last. המערכת תתעלם מכל אפשרות אחרת לאחר מכן.
-h, -help
סיכום קצר של השימוש.
-H, -longhelp
סיכום של כל האפשרויות האפשריות.
-version
מדפיסים את מספר הגרסה (as primary.minor.revision) ויוצאים.
-lossless
לקודד את התמונה ללא אובדן. בתמונות עם אזור שקוף לחלוטין, ערכי הפיקסלים הנסתרים (R/G/B או Y/U/V) יישמרו רק אם משתמשים באפשרות -exact.
-near_lossless int
יש לציין את הרמה של עיבוד תמונה מראש כמעט ללא אובדן. האפשרות הזו משנה את ערכי הפיקסלים כדי לשפר את הדחיסה, אבל יש לה השפעה מינימלית על האיכות החזותית. הוא מפעיל מצב דחיסה ללא אובדן נתונים באופן אוטומטי. הטווח הוא 0 (מקסימום עיבוד מראש) ל-100 (ללא עיבוד מראש, ברירת המחדל). הערך האופייני הוא כ-60. שימו לב שהפסד ב--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), עדיף לאפשרות הזו להופיע ראשונה לפי סדר הארגומנטים.

-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, הערך יחושב כדי לשמור על יחס הגובה-רוחב. הערה: שינוי הגודל מתבצע אחרי החיתוך.

-mt

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

-low_memory

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

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

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

-size int
מציינים גודל יעד (בבייטים) כדי לנסות את פוטנציאל החשיפה של הפלט הדחוס. המדחס מבצע כמה מעברים של קידוד חלקי כדי להתקרב כמה שיותר ליעד. אם משתמשים גם ב--size וגם ב--psnr, הערך של -size הוא הקובע.
-psnr float
יש לציין PSNR (בדציבלים) של יעד כדי לנסות להגיע לפלט הדחוס. המדחס מבצע מספר "היטים" של קידוד חלקי כדי להתקרב כמה שיותר ליעד. אם משתמשים גם ב--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 או intra 16x16, ולבסוף מצבי החיזוי שבהם צריך להשתמש בכל אחד מחסומי המשנה. לתמונה גדולה מאוד, 512k משאיר מקום רק לכמה ביטים לכל מאקרובלוק 16x16. המינימום המוחלט הוא 4 ביט לכל מאקרובלוק. המידע לגבי דילוג, פילוח ומצב יכול לצרוך כמעט את כל 4 הביטים האלה (אם כי המצב לא סביר), דבר שעלול להיות בעייתי לתמונות גדולות מאוד. הגורם partition_limit קובע את תדירות השימוש במצב היקר ביותר (intra 4x4). זו אפשרות שימושית אם הגעת למגבלה של 512k ומוצגת ההודעה הבאה: קוד שגיאה: 6 (PARTITION0_OVERFLOW: מחיצה #0 גדולה מדי ולא מתאימה ל-512k). אם השימוש ב--partition_limit לא מספיק כדי לעמוד באילוץ של 512k, צריך להשתמש בפחות קטעים כדי לשמור יותר ביטים של כותרת לכל מאקרו בלוק. ראו את האפשרות -segments. שימו לב שהאפשרויות -m ו--q משפיעות גם על ההחלטות של המקודד ועל היכולת להגיע למגבלה הזו.

אפשרויות רישום ביומן

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

-v
להדפיס מידע נוסף (במיוחד זמן קידוד).
-print_psnr
לחשב ולדווח על ערך 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 (ויכול להיות שאחרים משתמשים בו).