如何使用python模拟图像编辑器中图像文件的打开和保存?

时间:2017-04-16 06:14:49

标签: python image python-3.x save png

我遇到了损坏的.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

1 个答案:

答案 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。的注册商标。