为什么我不能使用PyPNG往返图像?

时间:2016-02-24 16:43:01

标签: python pypng

这看起来很简单:

import png
rdr = png.Reader(filename='help.png')
width, height, pixels, metadata = rdr.read()
with open('help-new.png', 'w') as outfile:
    png.Writer(**metadata).write(outfile, pixels)

但是,我无法打开新图像,因为文件“似乎已损坏,损坏或太大”。如果我尝试将结果加载回PyPNG,我会得到:

FormatError: FormatError: PNG file has invalid signature.

其他信息:元数据如下所示:

'bitdepth': 8, 'interlace': 0, 'planes': 1,
'greyscale': False, 'alpha': False, 'size': (18, 18)

第一个调色板条目是(0,0,0,0),而其他的都是形式(255,255,255,A),其中A在0到255之间。源文件是718字节,结果文件是748字节。

1 个答案:

答案 0 :(得分:4)

以二进制模式打开输出文件:

open('help-new.png', 'wb') as outfile:
                       ^
                       |
                  that's it,
                  right there

否则,I / O层可能会执行换行符,这是您永远不需要的二进制文件。