Score:2

รับข้อมูลพิกเซลจาก JPG/JPEG แต่ยังคงความสมบูรณ์อยู่ใช่ไหม

ธง in

เท่าที่ฉันรู้ JPG เป็นรูปแบบการบีบอัดรูปภาพที่สูญหาย

ในขณะเดียวกัน BMP เป็นรูปแบบภาพที่ไม่มีการบีบอัดโดยทั่วไป ซึ่งมีโครงสร้างไฟล์ประกอบด้วย bitmapFileHeader (14 ไบต์) และ bitmapInfoHeader (40 ไบต์) ส่วนที่เหลือเป็นข้อมูลพิกเซล

ดังนั้นฉันต้องผ่าน 54 ไบต์แรกและจัดเก็บเป็นตัวแปร HEADER และเก็บส่วนที่เหลือไว้ในตัวแปร PIXELDATA

ในสถานะนี้ ฉันสามารถเข้ารหัสและถอดรหัส PIXELDATA ได้อย่างอิสระ และสามารถรวมเข้ากับ HEADER อีกครั้ง เพื่อรักษาความสมบูรณ์ของไฟล์

แต่ในกรณีของ JPG จะแตกต่างออกไป ฉันต้องการลองอ่านพิกเซลด้วยตนเอง แต่ฉันไม่รู้ว่าไบต์ดัชนีอยู่ในตำแหน่งใด (ต่างจาก BMP ที่ข้าม 54 ไบต์)

ฉันใช้ Python กับไลบรารีต่างๆ เช่น PIL หรือ Numpy ทั้งคู่สามารถอ่าน Pixels ได้ แต่เมื่อบันทึกเป็นไฟล์ JPG ใหม่ มันแตกต่างจากต้นฉบับตรงที่:

  1. การเปรียบเทียบเช็คซัม SHA-256
  2. ขนาดไฟล์ที่แตกต่างกัน
  3. สีของพิกเซลบางส่วนเปลี่ยนไปจากเดิมหากคุณดูรายละเอียดเพิ่มเติม

คำถามของฉันคือ มีวิธีอื่นในการอ่านข้อมูลพิกเซลของไฟล์ JPG แต่ยังคงให้ความสมบูรณ์ของไฟล์ JPG ต้นฉบับเมื่อบันทึกในไฟล์ JPG ใหม่หรือไม่ (การตรวจสอบ ขนาดไฟล์ และสีของพิกเซลเหมือนกัน)

knaccc avatar
es flag
ฉันคิดว่าคำถามของคุณสามารถทำให้ง่ายขึ้นได้: มีวิธีสร้างไฟล์ JPG ที่สามารถบีบอัดและคลายการบีบอัดซ้ำ ๆ ได้โดยที่พิกเซลไม่เปลี่ยนแปลงหรือไม่? หรือบางทีคุณอาจต้องการทราบวิธีใส่ส่วนหัวอื่นลงในไฟล์ JPG ที่มีอยู่โดยไม่ต้องคลายและบีบอัดพิกเซลใหม่
DannyNiu avatar
vu flag
J2K สามารถใช้งานได้อย่างไม่สูญเสีย หากคุณพบ lib ที่กำหนดการเข้ารหัส JPEG2000 และรูปแบบนั้นสามารถทำงานร่วมกับแอปพลิเคชันของคุณได้ ฉันคิดว่าปัญหาได้รับการแก้ไขแล้ว
ph flag
คุณพูดถึงการเข้ารหัสในคำถามของคุณ แต่ดูเหมือนว่านี่เป็นคำถามเกี่ยวกับรูปแบบรูปภาพจริงๆ
ph flag
และมีข้อสังเกตว่าวิธีที่ง่ายที่สุดในการไม่บันทึกเวอร์ชันอื่นคือการไม่บันทึกเลย คุณสามารถติดตามได้ว่าคุณมีการเปลี่ยนแปลงใด ๆ ที่คุณต้องการบันทึกหรือไม่? มิฉะนั้นการบีบอัดแบบสูญเสียจะบีบอัดแบบสูญเสีย
Gilles 'SO- stop being evil' avatar
ฉันลงคะแนนให้ปิดคำถามนี้ เนื่องจากเป็นคำถามเกี่ยวกับรูปแบบและการบีบอัดรูปภาพ ไม่มีการรักษาความปลอดภัยที่เกี่ยวข้อง
Score:1
ธง jp

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

ข้อมูลที่จัดเก็บซึ่งเป็นปัจจัยเหล่านี้มีข้อมูลน้อยกว่าที่พิกเซลจะทำได้อย่างมาก

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

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

โพสต์คำตอบ

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