Cwebp

ชื่อ

cwebp -- บีบอัดไฟล์ภาพเป็นไฟล์ WebP

เรื่องย่อ

cwebp [options] input_file -o output_file.webp

คำอธิบาย

cwebp บีบอัดรูปภาพโดยใช้รูปแบบ WebP รูปแบบอินพุตอาจเป็น PNG, JPEG, TIFF, WebP หรือตัวอย่าง Y'CbCr แบบ Raw หมายเหตุ: ไม่รองรับไฟล์ PNG และ WebP แบบเคลื่อนไหว

ตัวเลือก

โดยตัวเลือกพื้นฐานมีดังนี้

-o string
ระบุชื่อของไฟล์ WebP เอาต์พุต หากละไว้ cwebp จะบีบอัด แต่จะรายงานสถิติเท่านั้น การใช้ "-" เป็นชื่อเอาต์พุตจะนำเอาต์พุตไปที่ "stdout" โดยตรง
-- string
ระบุไฟล์อินพุตอย่างชัดเจน ตัวเลือกนี้จะมีประโยชน์หากไฟล์อินพุตขึ้นต้นด้วย '-' ตัวเลือกนี้ต้องปรากฏ last ระบบจะไม่สนใจตัวเลือกอื่นๆ ในภายหลัง
-h, -help
สรุปการใช้งานสั้นๆ
-H, -longhelp
สรุปตัวเลือกที่เป็นไปได้ทั้งหมด
-version
พิมพ์หมายเลขเวอร์ชัน (เป็น main.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

ลดการใช้หน่วยความจำของการเข้ารหัสแบบสูญเสียบางส่วนโดยประหยัดขนาดที่บีบอัดเป็น 4 เท่า (โดยทั่วไป) ซึ่งจะทำให้การเข้ารหัสช้าลงและเอาต์พุตขนาด มีการผิดเพี้ยนเล็กน้อย แฟล็กนี้มีผลเฉพาะกับวิธีที่ 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 เป้าหมายขนาด 40 dB
-af
เปิดตัวกรองอัตโนมัติ อัลกอริทึมนี้จะใช้เวลาเพิ่มเติมในการเพิ่มประสิทธิภาพ ความแรงของการกรองเพื่อให้ได้คุณภาพที่สมดุล
-jpeg_like
เปลี่ยนการแมปพารามิเตอร์ภายในให้ตรงกับขนาดการบีบอัด JPEG ที่คาดไว้มากขึ้น โดยทั่วไป Flag นี้จะสร้างไฟล์เอาต์พุตที่มีขนาดใกล้เคียงกับ JPEG (สำหรับการตั้งค่า -q เดียวกัน) แต่ภาพบิดเบี้ยวน้อยกว่า

ตัวเลือกขั้นสูง:

-f int
ระบุระดับการกรองของตัวกรองการเลิกบล็อกระหว่าง 0 (ไม่มีการกรอง) ถึง 100 (การกรองสูงสุด) ค่า 0 จะปิดการกรองทั้งหมด ค่าที่สูงขึ้นจะเพิ่มความเข้มงวดของกระบวนการกรองที่ใช้ หลังจากการถอดรหัสภาพ ค่ายิ่งสูงขึ้นเท่าใด ภาพก็จะดูราบรื่นขึ้นเท่านั้น ค่าทั่วไปมักจะอยู่ในช่วง 20 ถึง 50
-sharpness int
ระบุความคมชัดของการกรอง (หากใช้) ช่วงคือ 0 (คมชัดที่สุด) ถึง 7 (คมน้อยที่สุด) ค่าเริ่มต้นคือ 0
-strong
ใช้การกรองที่มีประสิทธิภาพ (หากมีการใช้ตัวกรองด้วยตัวเลือก -f) การกรองขั้นสูงจะเปิดอยู่โดยค่าเริ่มต้น
-nostrong
ปิดใช้การกรองขั้นสูง (หากมีการใช้ตัวกรองเนื่องจากตัวเลือก -f) และใช้การกรองแบบง่ายแทน
-sharp_yuv
ใช้ Conversion สำหรับ 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 และใช้เพื่อจัดเก็บข้อมูลต่อไปนี้: มีการข้ามมาโครบล็อกหรือไม่ บล็อกของกลุ่มใด โค้ดเป็นโหมด 4x4 หรือโหมดภายใน 16x16 และสุดท้ายคือโหมดการคาดการณ์ที่ใช้สำหรับการบล็อกย่อยแต่ละรายการ สำหรับรูปภาพขนาดใหญ่มาก ขนาด 512K จะเหลือพื้นที่เพียงไม่กี่บิตต่อมาโครบล็อก 16x16 ค่าขั้นต่ำสัมบูรณ์คือ 4 บิตต่อมาโครบล็อก ข้อมูลการข้าม กลุ่ม และโหมดอาจใช้บิต 4 บิตนี้เกือบทั้งหมด (แต่มักไม่น่าจะเกิดขึ้นได้) ซึ่งเป็นปัญหาสำหรับรูปภาพขนาดใหญ่มาก ปัจจัย partition_limit จะควบคุมความถี่ในการใช้โหมดต้นทุนสูงสุด (ภายใน 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 ระนาบ Luma มีขนาด width x height
-pre int
ระบุขั้นตอนก่อนการประมวลผล การใช้ค่า 2 จะทริกเกอร์การระบายสีแบบสุ่มโดยอิงตามคุณภาพในระหว่าง Conversion ที่เป็น RGBA->YUVA (การบีบอัดแบบสูญเสียเท่านั้น)
-alpha_filter string
ระบุวิธีการกรองแบบคาดการณ์สำหรับระนาบอัลฟ่า มีค่าเป็น none, fast หรือ best เพื่อเพิ่มความซับซ้อนและลำดับความช้า ค่าเริ่มต้นคือ fast การกรองอัลฟ่าใช้ภายในโดยใช้การคาดการณ์ที่เป็นไปได้ 4 อย่าง (ไม่มี แนวนอน แนวตั้ง การไล่ระดับสี) โหมด best จะลองใช้แต่ละโหมดแล้วเลือกโหมดที่มีขนาดเล็กลง โหมด fast จะพยายามสร้างการคาดเดา ลำดับความสำคัญ โดยไม่ต้องทดสอบทุกโหมด
-alpha_method int
ระบุอัลกอริทึมที่ใช้สำหรับการบีบอัดอัลฟ่า: 0 หรือ 1 อัลกอริทึม 0 หมายถึงไม่มีการบีบอัด 1 ใช้รูปแบบ WebP แบบไม่สูญเสียรายละเอียดในการบีบอัด โดยมีค่าเริ่มต้นเป็น 1
-exact
เก็บรักษาค่า RGB ไว้ในบริเวณโปร่งใส ค่าเริ่มต้นจะปิดอยู่เพื่อช่วย การบีบอัด
-blend_alpha int
ตัวเลือกนี้จะผสานรวมช่องทางอัลฟ่า (หากมี) กับต้นฉบับโดยใช้สีพื้นหลังที่ระบุเป็นเลขฐานสิบหกเป็น 0xrrggbb หลังจากนั้น แชแนลอัลฟ่าจะรีเซ็ตเป็นค่าทึบ 255
-noalpha
การใช้ตัวเลือกนี้จะเป็นการทิ้งเวอร์ชันอัลฟ่า
-hint string
คำแนะนำเกี่ยวกับประเภทรูปภาพที่ป้อน ค่าที่เป็นไปได้คือ photo, picture หรือ graph
-metadata string

รายการข้อมูลเมตาที่คั่นด้วยคอมมาที่จะคัดลอกจากอินพุตไปยังเอาต์พุต หากมี ค่าที่ถูกต้อง: all, none, exif, icc, xmp โดยมีค่าเริ่มต้นเป็น none

โปรดทราบว่ารูปแบบอินพุตแต่ละรูปแบบอาจไม่รองรับชุดค่าผสมทั้งหมด

-noasm

ปิดใช้การเพิ่มประสิทธิภาพ Assembly ทั้งหมด

ข้อบกพร่อง

ตัวอย่าง

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 (และอาจมีผู้อื่นใช้ด้วย)