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

如何读取TXT文件的二进制字符串并通过Python代码生成RGB图片

问题解决方法

一、读取TXT文件内容的实现

你的TXT内容为逗号分隔的8位二进制字符串,首尾附带空白字符,读取逻辑如下:

  • 用open()打开目标txt文件读取全部内容
  • 调用strip()清除首尾空白
  • 调用split(',')按逗号拆分,直接得到所有8位二进制串的列表,不需要原代码中的切片逻辑,避免把逗号、空白切到有效内容里。

代码示例:

from PIL import Image

# 替换为你的TXT文件实际路径
with open('binary_data.txt', 'r', encoding='utf-8') as f:
    content = f.read().strip()
# 拆分得到二进制串列表
vdiv = content.split(',')

二、全黑图片的原因和修复方案

错误原因

  1. 原字符串拆分逻辑错误,会把逗号、空白切到内容中,diff函数遇到非0/1的字符会返回None,PIL处理空值时会默认渲染为黑色
  2. 四层嵌套循环逻辑错误:每个坐标的像素会被遍历所有二进制串的所有字符反复赋值,最终取值只和最后一个遍历的字符有关,自然无法得到正确结果。

修复后的完整代码

你需要的效果是每一行对应一个8位二进制串,每一列对应串中的一位,1显示黑色、0显示白色,对应逻辑调整如下:

from PIL import Image

def diff(inp):
    if inp == '1':
        return (0,0,0) # 1对应黑色
    elif inp == '0':
        return (255,255,255) # 0对应白色
    # 异常值处理,避免空值导致的全黑问题,非0/1字符用红色标记方便排查
    else:
        return (255,0,0)

# 读取TXT文件
with open('binary_data.txt', 'r', encoding='utf-8') as f:
    content = f.read().strip()
vdiv = content.split(',')

# 新建图片:宽度固定8,高度等于二进制串的数量
img = Image.new('RGB', (8, len(vdiv)), "white")
pixels = img.load()

# 修复后的循环逻辑
for y in range(len(vdiv)):
    current_str = vdiv[y]
    for x in range(8):
        pixels[x, y] = diff(current_str[x])

img.show()
# 如需保存可新增:img.save('result.png')

内容的提问来源于stack exchange,提问作者lena

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:54:06