本发明涉及计算机领域,尤其涉及一种nef文件修复方法、装置、设备及存储介质。
背景技术:
1、nef文件是一种尼康数码相机raw图像文件,目前该格式文件主要应用于网络、数字媒体等领域,主要作为网站图形元素、日常生活纪念等应用方式在计算机存储介质内保存。但在日常生活工作中常常因为存储介质损坏,病毒破坏使文件遭受不可逆的损坏,使nef格式文件完全无法打开,或打开后图片呈现像素块杂乱无序,无法构成正常图像,
2、当前修复损坏nef文件仅靠提取其中残留的jpg缩略图,无法恢复完整的nef文件,现有的技术方案中,并没有直接修复nef格式的修复方案,使得nef文件修复准确率低。
技术实现思路
1、本发明的主要目的在于解决nef文件修复准确率低的技术问题。
2、本发明第一方面提供了一种nef文件修复方法,所述nef文件修复方法包括:
3、获取正常nef文件及损坏nef文件,根据所述正常nef文件的文件头位置,得到图像文件目录的偏移位置;
4、根据所述图像文件目录的偏移位置及预设读取规则,得到所述图像文件目录对应的所有子图像文件目录,并根据所述所有子图像文件目录,得到所述正常nef文件中jpg数据偏移位置及raw数据偏移位置;
5、搜索所述损坏nef文件,得到所述损坏nef文件中rgb数据偏移位置,提取所述rgb数据偏移位置的rgb数据,并将所述rgb数据通过opencv库保存为jpg数据;
6、搜索所述损坏nef文件,得到所述损坏nef文件中raw数据起始偏移位置,并根据所述raw数据起始偏移位置,得到所述损坏nef文件的raw数据;
7、将所述jpg数据、以及所述raw数据分别填充到所述正常nef文件中jpg数据偏移位置及raw数据偏移位置中,得到修复后的nef文件。
8、可选的,在本发明第一方面的第一种实现方式中,所述根据所述图像文件目录的偏移位置及预设读取规则,得到所述图像文件目录对应的所有子图像文件目录,并根据所述所有子图像文件目录,得到所述正常nef文件中jpg数据偏移位置及raw数据偏移位置包括:
9、根据所述图像文件目录的偏移位置及预设读取规则,搜索预设第一目录项类型的偏移位置;
10、根据所述预设第一目录项类型的偏移位置,得到所述图像文件目录对应的所有子图像文件目录;
11、根据所述所有子图像文件目录,得到所述正常nef文件中jpg数据偏移位置及raw数据偏移位置。
12、可选的,在本发明第一方面的第二种实现方式中,所述根据所述预设第一目录项类型的偏移位置,得到所述图像文件目录对应的所有子图像文件目录包括:
13、根据所述预设第一目录项类型的偏移位置,得到目录项数量;
14、根据所述目录项数量,得到子图像文件目录数量;
15、获取首个子图像文件目录的偏移位置,根据所述首个子图像文件目录的偏移位置、以及所述子图像文件目录数量,得到所有子图像文件目录。
16、可选的,在本发明第一方面的第三种实现方式中,所述根据所述所有子图像文件目录,得到所述正常nef文件中jpg数据偏移位置及raw数据偏移位置包括:
17、根据所述所有子图像文件目录,得到首个子图像文件目录;
18、根据所述首个子图像文件目录,通过所述预设读取规则,得到所述正常nef文件中jpg数据偏移位置;
19、获取下一个子图像文件目录,根据所述下一个子图像文件目录,通过所述预设读取规则,得到所述正常nef文件中raw数据偏移位置。
20、可选的,在本发明第一方面的第四种实现方式中,所述搜索所述损坏nef文件,得到所述损坏nef文件中raw数据起始偏移位置,并根据所述raw数据起始偏移位置,得到所述损坏nef文件的raw数据包括:
21、搜索所述损坏nef文件,根据所述rgb数据偏移位置,搜索预设第二目录项类型的偏移位置;
22、根据所述预设第二目录项类型的偏移位置,得到预设字节位置的字节数据;
23、若所述预设字节位置的字节数据等于预设阈值,则获取所述损坏nef文件中raw数据起始偏移位置,并根据所述raw数据起始偏移位置,得到所述损坏nef文件的raw数据。
24、可选的,在本发明第一方面的第五种实现方式中,所述搜索所述损坏nef文件之前,还包括:
25、获取所述正常nef文件的字节序;
26、根据所述字节序,设置所述损坏nef文件的读取方式。
27、可选的,在本发明第一方面的第六种实现方式中,所述将所述jpg数据、以及所述raw数据分别填充到所述正常nef文件中jpg数据偏移位置及raw数据偏移位置中,得到修复后的nef文件包括:
28、根据所述所有子图像文件目录,得到所述正常nef文件中rgb数据偏移位置;
29、将所述rgb数据、所述jpg数据、以及所述raw数据分别填充到所述正常nef文件中rgb数据偏移位置、jpg数据偏移位置及raw数据偏移位置中,得到修复后的nef文件。
30、本发明第二方面提供了一种nef文件修复设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述nef文件修复设备执行上述的nef文件修复方法。
31、本发明的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的nef文件修复方法。
32、在本发明实施例中,获取正常nef文件及损坏nef文件,根据所述正常nef文件的文件头位置,得到图像文件目录的偏移位置;根据所述图像文件目录的偏移位置及预设读取规则,得到所述图像文件目录对应的所有子图像文件目录,并根据所述所有子图像文件目录,得到所述正常nef文件中jpg数据偏移位置及raw数据偏移位置;搜索所述损坏nef文件,得到所述损坏nef文件中rgb数据偏移位置,提取所述rgb数据偏移位置的rgb数据,并将所述rgb数据通过opencv库保存为jpg数据;搜索所述损坏nef文件,得到所述损坏nef文件中raw数据起始偏移位置,并根据所述raw数据起始偏移位置,得到所述损坏nef文件的raw数据;将所述jpg数据、以及所述raw数据分别填充到所述正常nef文件中jpg数据偏移位置及raw数据偏移位置中,得到修复后的nef文件。在本发明中,通过读取正常nef文件的图像文件目录的偏移位置以及子图像文件目录,得到正常nef文件中jpg数据偏移位置及raw数据偏移位置,搜索损坏nef文件,得到损坏nef文件的raw数据和rgb数据,并将rgb数据通过opencv库保存为jpg数据,将jpg数据、以及raw数据分别填充到正常nef文件中jpg数据偏移位置及raw数据偏移位置中,能实现损坏nef文件的直接修复,从而恢复完整的nef文件,提高nef文件修复的准确率。