我遇到了损坏的.png
图片文件*的某个问题,我只需在图片编辑器(Apple' Preview中)打开它们并将其保存回来就可以克服这些问题做出任何明确的改变。
我有数以千计的类似损坏的图像文件,需要进行相同的程序。有没有办法在python中自动化它?
以下天真的代码不起作用:
>>> with open('an_image.png', 'rb') as f:
... data = f.read()
... with open('an_image.png', 'wb') as f:
... f.write(data)
为什么这段代码不起作用?图像编辑器做了什么来纠正问题,我如何以编程方式模仿它?
我的操作系统是macOS Sierra版本10.12.4 我的python版本是3.6.1。
Here是其中一个损坏文件的示例。
*对于有兴趣的人,原始问题描述为here。
答案 0 :(得分:2)
您的示例文件https://i.stack.imgur.com/a5uXX.png实际上并不是PNG文件。它是一个"CgBI" file,它是由Apple X代码软件创建的类似PNG的文件,可能使用他们的流氓" pngcrush"应用。有多种方法可以从CgBI文件中恢复有效的PNG文件(除了不透明像素的基础颜色值中不可避免的精度损失之外)。
Apple修改过的pngcrush本身就有能力 恢复" iPhone优化"
有第三方应用程序,例如公共域,开源 pngdefry申请 可以在网上找到。
抱歉没有告诉你如何通过python调用调用pngdefry或pngcrush,但希望这会让你走上正轨,至少告诉你文件发生了什么。
法律声明:我需要注意Apple和iPhone 是Apple,Inc。的注册商标。