Hai Saya yakin ada banyak pertanyaan serupa yang diajukan, tetapi setelah mencari banyak, saya tidak menemukan posting yang menggambarkan situasi saya.
Saya memiliki beberapa file jpg yang memiliki beberapa warna salah setelah titik tertentu dan juga setiap piksel bergeser ke kiri. Saya pikir ini karena beberapa byte yang hilang pada titik di mana ia berubah. Saya mencoba mengedit file dengan vi tetapi sepertinya tidak mungkin untuk mencari tahu di mana byte yang hilang, juga vi sangat rumit untuk digunakan. Saya juga mencoba nano tetapi tidak aman biner.
Ini adalah salah satu gambar yang dimaksud:
Jadi saya ingin mengajukan dua pertanyaan:
- Bagaimana saya bisa memperbaiki gambar seperti itu di Linux?
- Bagaimana saya bisa dengan aman membuka dan mengedit file dalam editor teks biner di Linux?
Sunting: menggunakan hexedit Saya menemukan bahwa dari posisi 0x27F000 ke 0x27F403 hanya ada yang 0xff, dan dari 0x27F404 ke 0x27FFFF hanya ada nol 0x00. Ini membuat sesuatu seperti ini:
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.....
Mengubah byte ini dengan angka acak saya bisa mengubah gambar, tetapi masih ada masalah warna.
Bisakah seseorang mengarahkan saya ke beberapa dokumentasi tentang pengkodean jpeg sehingga saya bisa mengetahui bagaimana cara mengetahui di mana blok 8x8 berakhir.
Saya bertanya-tanya mengapa posisinya sangat tepat (0x27F000 hingga 0x27FFFF), mungkinkah ini bug cam saya atau kartu memori yang saya gunakan?
Jawaban:
Artikel wikipedia di http://en.wikipedia.org/wiki/JPEG#Entropy_coding memiliki banyak informasi - yang paling relevan dengan masalah Anda saat ini adalah yang ini:
Pergeseran warna pada sisa gambar disebabkan oleh koefisien DC buruk tunggal yang mengalir ke semua sisanya. Anda mungkin dapat menemukan area kecil (mungkin satu byte, mungkin dua - itu mungkin sebenarnya beberapa urutan bit) yang dapat dipercaya mempengaruhi warna, dan mencoba sejumlah besar nilai yang berbeda untuk itu.
Mungkin lebih mudah untuk hanya memperbaiki gambar dalam editor grafik - sepertinya yang Anda posting, selain shift (dan sampul), mungkin hanya memiliki kecerahan yang lebih rendah, Anda dapat memilih area dan menggunakan alat Levels. Orang lain yang memiliki lebih banyak pergeseran warna, Anda mungkin bisa mendapatkan hasil yang cukup baik dengan melihat dekomposisi dalam saluran warna (JPG mungkin dalam RGB atau Y'CbCr) dan memperbaiki setiap saluran secara terpisah, mungkin mengganti saluran.
EDIT: Ups, saya tidak melihat berapa umur pertanyaan Anda. Ya, mungkin ini akan berguna bagi Anda atau orang lain.
sumber
Banyak editor biner hebat dapat ditemukan di sini: /programming/839227/how-to-edit-binary-file-on-the-unix-systems
Favorit pribadi saya adalah vim dengan:%! Xxd hack dan hexedit
sumber
shed
?Sudahkah Anda mencoba
photorec
? Anda dapat menginstalnya di Ubuntu seperti ini:Periksa manual dengan:
dan jalankan
photorec
dari terminal seperti:Ini akan meminta Anda untuk memilih sumber dan tujuan dan mencoba memulihkan file jpg secara otomatis.
Untuk mencegah kerusakan pada dokumen asli, saya sarankan untuk membuat salinan dengan
dd
perintah. Semoga berhasil!sumber
Saya hanya menggunakan Photorec untuk memulihkan gambar dari kartu SD yang rusak. Meskipun tidak memulihkan semua file, itu berhasil memulihkan sejumlah besar file. Dengan demikian, video MP4 dipulihkan tetapi tidak dapat dibuka. Beberapa file JPEG telah dipulihkan tetapi mereka juga tidak dapat dilihat atau benar-benar kacau, seperti sampel yang disediakan di awal utas ini. Photorec tidak memperbaikinya.
Intinya: Photorec dirancang untuk mengambil file yang hilang dari SISTEM FILE yang rusak tetapi tampaknya tidak melakukan apa pun untuk memulihkan konten FILES yang rusak.
sumber