ชื่อ
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
- พิมพ์หมายเลขเวอร์ชัน (เป็น main.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
หากมี (แต่ไม่ใช่ทั้ง 2 อย่าง) ของพารามิเตอร์ความกว้างหรือความสูงคือ0
ค่านี้จะเป็น ที่คำนวณมาโดยรักษาอัตราส่วนกว้างยาวไว้ หมายเหตุ: การปรับขนาดจะมีผลหลังจาก การครอบตัด-mt
หากเป็นไปได้ ให้ใช้การจัดชุดข้อความแบบ Multi-Threading สำหรับการเข้ารหัส
-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
- ใช้การแปลง 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 ซึ่งเรียกว่าพาร์ติชันควบคุมมีขีดจำกัด 512 K และ ใช้เพื่อจัดเก็บข้อมูลต่อไปนี้ว่ามาโครblock ข้าม ส่วนใดเป็นของกลุ่ม ไม่ว่าจะมีการเขียนโค้ดเป็นภายใน 4x4 หรือ ภายในโหมด 16x16 และสุดท้ายคือโหมดการคาดการณ์ ที่จะใช้สำหรับแต่ละโหมด บล็อกย่อย สำหรับรูปภาพขนาดใหญ่มาก 5.12 K จะเหลือพื้นที่เพียงไม่กี่บิตต่อ มาโครบล็อกขนาด 16x16 ค่าต่ำสุดสัมบูรณ์คือ 4 บิตต่อมาโครบล็อก ข้าม และข้อมูลโหมดจะใช้เกือบทั้ง 4 บิตนี้ (แม้ว่า กรณีนี้ไม่น่าจะเกิดขึ้น) ซึ่งเป็นปัญหาสำหรับภาพขนาดใหญ่มาก ปัจจัยpartition_limit
ที่ควบคุมความถี่ที่โหมดที่ใช้ต้นทุนต่ำที่สุด (intra 4x4) วิธีนี้มีประโยชน์ในกรณีที่ใช้ถึงขีดจำกัด 512,000 ครั้ง และข้อความต่อไปนี้ปรากฏขึ้น: รหัสข้อผิดพลาด: 6 (PARTITION0_OVERFLOW: พาร์ติชัน #0 มีขนาดใหญ่เกินไปสำหรับ 512 K) หากใช้-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
xheight
-pre int
- ระบุขั้นตอนการประมวลผลล่วงหน้า การใช้ค่า
2
จะทริกเกอร์ การกระจายแบบสุ่มที่ไม่มีคุณภาพที่ขึ้นอยู่กับคุณภาพระหว่างการแปลง 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
ปิดใช้การเพิ่มประสิทธิภาพการประกอบทั้งหมด
ข้อบกพร่อง
โปรดรายงานข้อบกพร่องทั้งหมดไปยังเครื่องมือติดตามปัญหาที่ 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 (และอาจนำมาใช้โดย อื่นๆ)