เราสามารถเปลี่ยนขนาดของภาพ JPEG โดยไม่ต้องถอดรหัสและเข้ารหัสอีกครั้งได้หรือไม่


12

ฉันต้องการแปลงภาพ JPEG 640x480 เป็น 320x240 ฉันรู้ว่ามันสามารถทำได้โดยการถอดรหัสภาพ JPEG เป็น YCbCr ดิบปรับขนาดและเข้ารหัสเป็น JPEG อีกครั้ง แต่เป็นไปได้ด้วยการเข้ารหัส JPEG เพื่อขยายภาพโดยตรงโดยไม่ต้องถอดรหัส?

คำตอบ:


14

คุณสามารถทำได้ แต่เฉพาะในกรณีที่วิวเวอร์ JPEG ของคุณรองรับส่วนขยายSmartScale JPEG jpegtranสามารถทำเช่นนี้สำหรับขนาดของ N / 8 โดยมี N = 1..16 โดยทั่วไปขนาดบล็อก DCT จะเปลี่ยนจาก 8x8 เป็นอย่างอื่นระหว่างการบีบอัดใหม่ (เช่น 4x4) ซึ่งปรับขนาดภาพได้อย่างมีประสิทธิภาพ

หมายเหตุ: SmartScale เปิดตัวในไลบรารี่ libjpeg เวอร์ชัน 8แต่ไม่รองรับผู้ชมอย่างกว้างขวาง

เอกสารที่อธิบายถึงการเปลี่ยนแปลงในรายละเอียดที่สามารถพบได้ที่นี่: วิวัฒนาการของ JPEG

แก้ไข:ดูเหมือนว่าผู้ชมส่วนใหญ่ไม่สามารถแสดงภาพเหล่านี้ได้จริงเนื่องจากใช้ libjpeg-turbo และ libjpeg-turbo เลือกที่จะไม่ใช้คุณสมบัตินี้ ในความเป็นจริงฉันได้ลองใช้โปรแกรมหลายโปรแกรม (บน Ubuntu 14.04 และ Windows 8) และไม่มีใครสามารถแสดงรูปภาพที่ลดขนาดที่สร้างโดยใช้ jpegtrans ได้ แม้แต่ Photoshop, IrfanView และ GIMP ก็ล้มเหลว

แก้ไข 2:อันที่จริงอูบุนตูและ Fedora ไม่ได้จัดส่งไลบรารี่ libjpeg8 แต่จะแทนที่ด้วย libjpeg-turbo version อย่างสมบูรณ์ ดังนั้นไม่มีโปรแกรมใดที่สามารถอ่านไฟล์ JPEG SmartScale ได้บันทึกสำหรับไบนารีบางตัวที่เชื่อมโยงกับไลบรารี libjpeg8 ดั้งเดิม


มีตัวแปลงสัญญาณที่สร้างภาพที่เติบโตเพียงแค่ต่อท้ายข้อมูลเพิ่มเติมไปที่ภาพ?
Necktwi

สิ่งที่เกี่ยวกับ jpeg ก้าวหน้า? มันไม่ได้เป็นอย่างที่ฉันต้องการหรือ
Necktwi

ไม่นั่นเป็นสิ่งที่แตกต่างกันเล็กน้อยโดยการเพิ่มคุณภาพของภาพ (จากต่ำถึงเต็ม) แต่ความละเอียดจะไม่เปลี่ยนแปลงเสมอ ( อ้างอิง ) อย่างไรก็ตามมีนามสกุล JPEG อื่นที่เรียกว่า "โหมดลำดับชั้น" ซึ่งเข้ารหัสความละเอียดที่แตกต่างกัน ( ดูที่นี่ด้วย ) แต่อีกครั้ง libjpeg-turbo ไม่รองรับ (ดูที่นี่ค้นหา "ความก้าวหน้า" ในข้อความ)
jmiserez

1
และเพื่อตอบความคิดเห็นแรกแน่นอนมีตัวแปลงสัญญาณดังกล่าว ไม่ใช่แค่ JPG สิ่งที่คุณกำลังมองหาเรียกว่าปิรามิดภาพหรือการแสดงหลายหน้าจอ เช่น JPEG2000 ใช้การแปลงเวฟเล็ตซึ่งสร้างปิรามิดเวฟเล็ต มีปิรามิดอื่น ๆ เช่นปิรามิด Gaussian หรือปิรามิด slideset นี้จะช่วยให้ภาพรวมที่ดีเกี่ยวกับวิธีการทำงานของสิ่งขณะ JPEG2000 จะกล่าวถึงที่นี่และที่นี่
jmiserez

ขอบคุณสำหรับข้อมูลเกี่ยวกับรูปแบบ JPEG ใหม่ ฉันไม่ได้คาดหวังว่าจะมีแหล่งรูปภาพ (กล้องสแกนเนอร์ ฯลฯ ) มากมายที่จะใช้พวกเขา
AFH

3

คำตอบสั้น ๆ คือไม่ รูปภาพ JPEG ใช้การบีบอัดซึ่งหมายความว่าแต่ละไบต์เอาท์พุทขึ้นกับสิ่งอื่นทั้งหมด หากคุณเปลี่ยนจำนวนไบต์ของรูปภาพคุณต้องขยายและบีบอัดใหม่

จะมีการสูญเสียคุณภาพอันเป็นผลมาจากการบีบอัดใหม่เนื่องจาก JPEG ใช้การบีบอัดแบบสูญเสีย แต่คุณจะสูญเสียคุณภาพต่อไปโดยการแบ่งความละเอียดออกเป็นสี่ส่วน คุณสามารถได้คุณภาพที่ดีที่สุดจากภาพที่มีความละเอียดต่ำโดยการเพิ่มระดับคุณภาพ JPEG เมื่อทำการบีบอัดซ้ำแม้ว่าหลักสูตรนี้จะเพิ่มขนาดไฟล์

หากคุณทำงานกับรูปภาพเป็นจำนวนมากวิธีที่ดีที่สุดคือทำงานในรูปแบบการบีบอัดแบบไม่สูญเสียเช่น PNG เพื่อแปลงเป็น JPEG เฉพาะเมื่อภาพได้รับการสรุปแล้วโดยแน่นอนว่าคุณมีพื้นที่ดิสก์เพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.