Cwebp

שם

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 x height. החיתוך הזה האזור חייב להיות כלול במלואו בתוך מלבן המקור. הערה: החיתוך מוחל לפני כל הגדלה באחוזים.

-resize width height

משנים את גודל המקור למלבן בגודל width x height. אם אחד מהם (אבל לא שניהם) של הפרמטרים רוחב או גובה הוא 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 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 (ויכול להיות בשימוש על ידי אחרים).