python - 如何将excel文件中的像素值转换为图像?
问题描述
我有一个 Excel 文件,有 100 行和 100 列。每个元素都是一个像素强度值。如何使用 Python 将其转换为 2D 灰度图像?
解决方案
如果您有 Excel.xlsx
文件,则可以使用openpyxl读取值。Pillow库可用于构建和保存图像。
假设每个值是一个 8 位值,可以使用以下方法:
from itertools import chain
from PIL import Image
import openpyxl
wb = openpyxl.load_workbook("image.xlsx")
ws = wb.active
data = list(ws.iter_rows(values_only=True))
rows = len(data)
cols = max(len(row) for row in data)
img = Image.new('L', (cols, rows), color='black')
img.putdata(list(chain.from_iterable(data)))
img.save('output.png')
因此,对于包含这些值的 Excel 文件:
你会得到一个看起来像(放大)的PNG图像:
如果您的文件实际上是 CSV 格式:
from itertools import chain
from PIL import Image
import csv
data = []
with open('image.csv', newline='') as f_input:
for row in csv.reader(f_input):
data.append(list(map(int, row)))
rows = len(data)
cols = max(len(row) for row in data)
img = Image.new('L', (cols, rows), color='black')
img.putdata(list(chain.from_iterable(data)))
img.save('output.png')
例如image.csv
包含:
24,1,4,255,43,2
2,4,6,0,3,2
1,1,255,3,32,5
推荐阅读
- php - 如何使用函数的结果作为按钮的链接
- python - python pyzbar,FileNotFoundError:找不到模块
- html - 带空白的 Flexbox:pre
- javascript - 使用 react-promise-tracker 的无限获取请求
- laravel - Laravel Coinpayment 问题“HMAC 签名不匹配”
- javascript - 处理 EventEmitterModule 通配符 - NestJS
- python-3.7 - Python 3.7 - 如何将动态 csv 加载到预先存在的 mysql 表中,而不管文件 python 中的列顺序如何
- angular - 服务器端角度方式,dataTable 属性不适用于 Get 请求
- windows - 使用 OSQuery 选择文件夹和子文件夹中的所有文件
- docker - 将公共 ECR 图像用于 lambda 函数