python - 将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()
解决方案
您确实需要区分 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)
推荐阅读
- gradle - Gradle Maven 发布到 nexus delombok 源代码
- android - 使用来自 android 应用程序的自签名证书访问在服务器上运行的 REST API
- reactjs - 如何从子组件中的另一个反应表中获取反应表中“父”表的行号?
- android - 如何打开链接应用程序以直接打开这里的地图?
- react-native - 升级到 react-native 0.58 后,Jest 测试中断
- python - Python群聊使用UDP套接字的问题
- r - 提供双轴时缺少数据 - 多条迹线到子图
- javascript - 在 HTML/Javascript 中创建页面导航
- python - 是否可以在同一个笔记本中运行 Matlab 和 Python?
- ruby-on-rails - 在与另一个控制器相关的视图中构建与控制器相关的表单?