我可以使用损坏的jpeg数据修复照片吗?

时间:2014-07-17 13:52:43

标签: jpeg corruption

我的手机(android,fwiw)拍摄已损坏的照片。我不确定为什么或如何做到这一点,但它似乎阻止我将照片上传到某些服务。如果我将照片移动到我的电脑并在GIMP中打开它,我会看到一条警告信息:

Corrupt JPEG data: 1130 extraneous bytes before marker 0xd9

错误并不能阻止我查看或编辑照片,但我想知道是否有某种方法可以设置可以解决此问题的批处理过程?

3 个答案:

答案 0 :(得分:8)

没有图像就很难判断,但我认为ImageMagick会在没有多余数据的情况下正确地重写图像。如果您使用的是Linux,则可能已安装,请查找名为convert和/或mogrify的程序,该程序属于ImageMagick,否则您可以从here安装。

然后你想要一个对你的形象没有太大影响的命令,所以这样的东西应该是非常无害的:

mogrify -set comment 'Extraneous bytes removed' *.jpg

首先备份您的文件,然后在申请成千上万张图片之前进行测试!

答案 1 :(得分:1)

我遇到了jpg文件过早结束的问题,并且mogrify不会调整我的图像大小。我解决这个问题的方法是将图像转换为png并返回jpg。这解决了这个问题:

#!/bin/bash

mogrify -format png *.jpg
rm *.jpg
mogrify -format jpg *.png
rm *.png

由于压缩伪像可能会导致质量下降,但出于我的目的,这很好。

答案 2 :(得分:0)

我在构建图像分类模型时遇到了相同的问题:我使用大量图像作为输入对模型(用Tensorflow编写)进行了重新训练。

经过一番调查,我发现错误是由图像编辑(裁剪和旋转)引起的。由于EXIF信息仍保留原始尺寸,因此编辑后与最新尺寸不匹配。修复非常容易,我们可以使用mogrify中的imagick删除过时的EXIF信息。

mogrify <file name>

mogrify -strip <file name>