שם
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
xheight
. אזור החיתוך חייב להיות מוכל במלואו בתוך מלבן המקור. הערה: החיתוכים מתבצעים לפני שינוי קנה מידה.-resize width height
שנה את גודל המקור למלבן בגודל
width
xheight
. אם אחד (אבל לא שניהם) בפרמטרים של רוחב או גובה הוא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
xheight
. -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
השבתת כל האופטימיזציות של הרכבה.
באגים
אפשר לדווח על כל הבאגים למעקב אחר הבעיות: https://bugs.chromium.org/p/webp
התיקונים יתקבלו בברכה! כדי להתחיל, אפשר להיכנס לדף הזה: https://www.webmproject.org/code/contribute/submitting-patches/
דוגמאות
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 (ויכול להיות שאחרים משתמשים בו).