你的硬碟可能有壞道,建議使用一些硬碟修復軟體來隔離壞的磁區。對於損壞的小畫作,可以嘗試使用Photoshop進行修復,但如果檔案過大可能無法修復。我之前深入研究過這個問題,閱讀了JPEG標準、編碼解碼流程以及相關程式碼,但對於修復並沒有有效的方法。目前還沒有可行的解決方案,我希望你能相信這一點。
我把道理告訴你:
1、Jpeg是透過將圖片分塊,然後透過小波變換,如果錯誤的話應該是著一塊不能再使用,而別的塊的內容是可以恢復的。但是另一個方面,和這個區塊近鄰的幾個區塊可能就不行了,因為旁邊的區塊的資料取決於這個區塊。
在一般情況下,當讀取到錯誤的Huffman編碼時,我們可以逐一嘗試不同的編碼長度來修復。通常情況下,一個JPG檔案中使用的Huffman編碼個數不會太多,不會使用滿16位能表示的所有編碼。然而,最重要的問題是Huffman編碼是不定長的,如果一個編碼出錯,後面的編碼可能都會錯位。因此,在修復錯誤的Huffman編碼時,需要謹慎處理,以確保後續的編碼能夠正確讀取。
總結:
假設降低難度,重要標記碼沒有損壞,Huffman表和量化表沒有損壞,只有壓縮資料可能損壞。
1、怎麼知道那部分的壓縮資料壞了。
2、知道怎樣改了。
3、如果在資料傳輸中修復是用檢驗碼,但在資料檔案中卻是用檔案的備份。
這3點疑問我們已經無從入手了。故此現在為止也沒有最終的答案。希望你明白。
用ACDSEE或PHOTOSHOP、畫圖工具開啟此文件,
如果這3個打不開就不能修復了。
但是大部分圖片下部分不顯示,是不能說OK的。不過用ER、FD之類的免費軟體,能出來 一點東西也算不錯。因為圖片檔案通常佔用的空間是比較大的,這在檔案儲存的時候,極容易形成多個片段,也就是通常所說的檔案碎片。這類軟體在碎片處理演算法上,是有缺陷的。
解決你的問題的方法有兩個:
一是針對文件的修復:從底層打開JPG文件,查看其內部結構是否受到破壞(如量化表、霍夫曼表。。。。)如是文件結構的破壞,可進行相應的修復工作。
如果是因為碎片導致解碼資料流的遺失,轉為第二種方法。
二是重新分析你的圖片檔案在你的硬碟上的儲存結構,把相關檔案碎片全部提取出來,然後進行正確的組合,達到恢復你的檔案的目的。
如果覺得自己操作困難,可以HI我。
以上是jpg檔案損壞如何修復的詳細內容。更多資訊請關注PHP中文網其他相關文章!