You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:11:13