שם
cwebp
– דחיסת קובץ תמונה לקובץ WebP
תקציר
cwebp [options] input_file -o output_file.webp
תיאור
cwebp
דוחס תמונה באמצעות פורמט WebP. פורמט הקלט יכול להיות
דוגמאות PNG, JPEG, TIFF, WebP או RAW מסוג Y'CbCr.
הערה: אין תמיכה בקובצי PDF ו-WebP מונפשים.
אפשרויות
האפשרויות הבסיסיות הן:
-o string
- לציין את השם של קובץ הפלט WebP. אם לא צוין,
cwebp
יבצע דחיסת נתונים, אלא רק לדווח על נתונים סטטיסטיים. שימוש בסימן "-" בתור שם הפלט יפנה את הפלט אל '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
. חשוב לשים לב שאובדן הגישה ל--q 100
לפעמים יכול להניב תוצאות טובות יותר. -q float
צריך לציין את גורם הדחיסה לערוצי RGB בין
0
ל-100
. ברירת המחדל היא75
.במקרה של דחיסת נתונים מסוג אובדן (ברירת מחדל), גורם קטן מייצר באיכות נמוכה יותר. האיכות הטובה ביותר נשמרת באמצעות ערך של
100
במקרה של דחיסה ללא אובדן נתונים (מצוין באמצעות האפשרות
-lossless
), גורם קטן מאפשר מהירות דחיסה מהירה יותר, אבל מייצר קובץ גדול יותר. דחיסה מקסימלית מתאפשרת באמצעות ערך של100
.-z int
הפעלת מצב דחיסה של
lossless
כשהרמה שצוינה היא 0 ו-9, כשרמה 0 היא המהירה ביותר, 9 היא האיטית ביותר. מצב מהיר יוצרים קבצים גדולים יותר מאשר קבצים איטיים יותר. ברירת מחדל טובה היא-z 6
. האפשרות הזו היא למעשה קיצור דרך להגדרות מוגדרות מראש של איכות ו-method. אם בהמשך ייעשה שימוש באפשרויות-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
, הערך יהיה מחושב באופן שמשמר את יחס הגובה-רוחב. הערה: שינוי הגודל מוחל אחרי חיתוך.-mt
אם אפשר, כדאי להשתמש בריבוי שרשורים לקידוד.
-low_memory
הפחתת השימוש בזיכרון של קידוד עם איבוד נתונים על ידי חיסכון של פי ארבעה גודל (בדרך כלל). זה יאט את הקידוד ואת הפלט מעט שונות בגודל ובעיוות. הסימון הזה תקף רק שיטות 3 ואילך, והיא מושבתת כברירת מחדל. לתשומת ליבכם: השארת הסימון הזה במצב מושבת יהיו כמה תופעות לוואי על ה-bitstream: הוא מאליך זרם ביט מסוים תכונות כמו מספר המחיצות (כפוף ל-
1
). שימו לב שמודל משנה דוח מפורט לגבי גודל ה-bitstream מודפס על ידי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). האפשרות הזו שימושית במקרה שמגיעים למגבלה של 512,000 ומופיעה ההודעה הבאה: קוד שגיאה: 6 (PARTITION0_OVERFLOW: מחיצה מס' 0 גדולה מדי ולא יכולה להתאים ל-512k). אם משתמשים-partition_limit
לא מספיק כדי לעמוד באילוץ של 512,000, צריך להשתמש בפחות פלחים כדי לשמור יותר ביטים של כותרת לכל macroblock. צפייה האפשרות-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 (ויכול להיות בשימוש על ידי אחרים).