首页 > 解决方案 > 将txt文件中的二进制值转换为图像时出错

问题描述

我的文件有这样的值“01100000,10101000,01101000,01110000,10101100,01110000,01101000,10101”这是JPEG图像的值(120 * 160),我需要将此文件转换为图像,我尝试使用此代码,但出现此错误!

pixel[x,y] = diff(i2) #创建黑色图像。做什么?TypeError:颜色必须是 int 或 tuple

with open("C://Users//kk//Desktop//rbb8bin.txt") as file:
    vdiv = [line.strip() for line in file]
print(vdiv)

def diff(inp):
    if inp == '1':
        return (0,0,0)
    if inp == '0':
        return (255,255,255)
    else:
        pass
img = Image.new( 'RGB', (8,len(vdiv)), "white")
pixels = img.load()

for x in range(img.size[0]):
    for y in range(img.size[1]):
        for i in vdiv:
            for i2 in i:
                pixels[x,y] = diff(i2) #Creates a black image. What do?

img.show()

标签: pythonpython-3.ximage

解决方案


您确实需要区分 ASCII 文本和二进制文件。您的文件以一种非常丑陋、低效的方式存储。这是将其重新转换为 JPEG 的一种(同样丑陋的)方法:

#!/usr/bin/env python3

import csv

# Read text file as CSV into list
with open('data') as f:
    reader = csv.reader(f)
    # Discard height and width, i.e. first two values
    data = list(reader)[0][2:]

# Open binary output file, convert each string to bytes and write
with open('image.jpg', 'wb') as out:
    for v in data:
        b = int(v,2).to_bytes(1,byteorder='big')
        out.write(b)

在此处输入图像描述


推荐阅读