สวัสดีฉันแน่ใจว่ามีคำถามที่คล้ายกันจำนวนมากถาม แต่หลังจากค้นหามากฉันไม่พบโพสต์อธิบายสถานการณ์ของฉัน
ฉันมีไฟล์ jpg บางสีที่มีสีผิดหลังจากจุดหนึ่งและทุกพิกเซลจะถูกเลื่อนไปทางซ้าย ฉันคิดว่าเป็นเพราะไบต์ที่หายไปบางจุด ณ จุดที่มีการเปลี่ยนแปลง ฉันพยายามแก้ไขไฟล์ด้วย vi แต่ดูเหมือนว่าเป็นไปไม่ได้ที่จะหาว่าไบต์ที่ขาดหายไปนั้นเป็นอย่างไร vi ก็ซับซ้อนมากในการใช้ ฉันลองนาโนด้วย แต่มันก็ไม่ปลอดภัย
นี่คือหนึ่งในภาพที่เป็นปัญหา:
ดังนั้นฉันต้องการถามคุณสองคำถาม:
- ฉันจะซ่อมแซมรูปภาพใน Linux ได้อย่างไร
- ฉันจะเปิดและแก้ไขไฟล์อย่างปลอดภัยในตัวแก้ไขข้อความไบนารีภายใต้ Linux ได้อย่างไร
แก้ไข: ใช้ hexedit ฉันค้นพบว่าจากตำแหน่ง 0x27F000 ถึง 0x27F403 มีเพียง 0xff เท่านั้นและจาก 0x27F404 ถึง 0x27FFFF มีศูนย์เป็น 0x00 เท่านั้น สิ่งนี้ทำให้สิ่งนี้:
0027EFF0 F8 83 C3 E2 09 35 AF 13 44 6E C5 FD C7 EF 23 E8 .....5..Dn....#.
0027F000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
[...]
0027F400 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ................
[...]
0027FFF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00280000 8F 39 6E 47 4F 43 5F 36 7C 73 66 F1 0D AE AD AF .9nGOC_6|sf.....
การเปลี่ยนไบต์เหล่านี้ด้วยตัวเลขสุ่มฉันสามารถยกเลิกการเลื่อนภาพ แต่ยังคงมีปัญหาสี
มีใครบางคนชี้ให้ฉันดูเอกสารประกอบบางส่วนเกี่ยวกับการเข้ารหัส jpeg เพื่อที่ฉันจะได้ทราบวิธีการทราบว่าบล็อก 8x8 นั้นสิ้นสุดลงที่ใด
ฉันสงสัยว่าเหตุใดตำแหน่งจึงแม่นยำ (0x27F000 ถึง 0x27FFFF) นี่อาจเป็นข้อผิดพลาดของลูกเบี้ยวหรือการ์ดหน่วยความจำที่ฉันใช้หรือไม่