שם
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
xheight
. אזור החיתוך חייב להיכלל במלואו בתוך ריבוע המקור. הערה: החיתוך מוחל לפני כל הגדלה באחוזים.-resize width height
משנים את הגודל של המקור למלבן בגודל
width
xheight
. אם אחד (אבל לא שניהם) מהפרמטרים של רוחב או גובה הוא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
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://issues.webmproject.org
תיקונים מתקבלים בברכה. כדי להתחיל, אפשר לעיין בדף הזה: 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 (ויכול להיות בשימוש על ידי אחרים).