我的手机(android,fwiw)拍摄已损坏的照片。我不确定为什么或如何做到这一点,但它似乎阻止我将照片上传到某些服务。如果我将照片移动到我的电脑并在GIMP中打开它,我会看到一条警告信息:
Corrupt JPEG data: 1130 extraneous bytes before marker 0xd9
错误并不能阻止我查看或编辑照片,但我想知道是否有某种方法可以设置可以解决此问题的批处理过程?
答案 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>