为什么我不能使用 PyPNG 往返图像?
Why can't I round-trip an image using 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)
但是,由于文件 "appears to be damaged, corrupted, or too large",我无法打开我的新图像。如果我尝试将结果加载回 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字节。
以二进制模式打开输出文件:
open('help-new.png', 'wb') as outfile:
^
|
that's it,
right there
否则,I/O 层可能会进行换行符转换,这对于二进制文件来说是您永远不需要的。
这看起来相当简单:
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)
但是,由于文件 "appears to be damaged, corrupted, or too large",我无法打开我的新图像。如果我尝试将结果加载回 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字节。
以二进制模式打开输出文件:
open('help-new.png', 'wb') as outfile:
^
|
that's it,
right there
否则,I/O 层可能会进行换行符转换,这对于二进制文件来说是您永远不需要的。