3

这看起来相当简单:

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 字节。

4

1 回答 1

4

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

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

否则,I/O 层可能会进行二进制文件的换行转换。

于 2016-02-24T16:45:49.383 回答