Python 3从PNG文件获取字节:输出异常技术问询
嘿,这个输出其实完全正常哦!因为PNG本质是二进制文件,里面除了PNG这种可打印的标识字符外,大部分都是不可打印的控制字符或者非ASCII字节,Python在打印字节串的时候,会自动把这些不可打印的字节转成\xXX这种十六进制转义格式来显示,所以你看到的\x89、\r\n这些都是正常的表现。
下面根据不同需求给你对应的处理方案:
想把字节转换成更易读的十六进制字符串
直接调用字节对象的hex()方法就能得到一串连续的十六进制字符,方便查看每个字节的具体值:
with open('your_image.png', 'rb') as f: png_bytes = f.read() print(png_bytes.hex())
输出会是类似89504e470d0a1a0a0000000d49484452...的格式,每个字节对应两位十六进制数。
想验证读取的字节能正常还原成PNG文件
如果只是确认读取的字节没问题,直接把字节写入新文件即可:
with open('your_image.png', 'rb') as f: png_bytes = f.read() # 写入新文件验证完整性 with open('new_image.png', 'wb') as f: f.write(png_bytes)
打开新生成的new_image.png,如果能正常显示图片,说明你读取的字节是完全正确的。
想解析PNG的具体结构(比如IHDR、IDAT块)
PNG文件由多个标准化数据块组成,每个块包含长度、块类型、数据和CRC校验。你可以用现成的库简化解析工作,比如先安装pypng库:
pip install pypng
然后用以下代码解析图片元数据:
import png reader = png.Reader(filename='your_image.png') width, height, pixels, metadata = reader.read() print(f"图片尺寸:{width}x{height}") print(f"颜色模式:{metadata['color_type']}") print(f"压缩方式:{metadata['compression']}")
这样就能轻松拿到图片的尺寸、颜色模式等核心信息了。
内容的提问来源于stack exchange,提问作者iSYan
相关产品推荐
相关产品推荐

