原理:将图像中的每一个点映射到excel中的每一个单元格 安装:PIL, openpyxl 步骤: 1.使用PIL读取图像 2.使用openpyxl将一个个像素点写入到excel文件 中
# -*- coding: utf-8 -*-
# 将图像转换为excel文件,一个像素点对应一个单元格
import re
import openpyxl
from PIL import Image
from openpyxl.styles import PatternFill
# 因为通过PIL获取到的像素点是元组,所以将元组转换为FFEEFFDD格式的字符串
def tuple2str(t):
lst = ['{0:#0{1}x}'.format(elt, 4) for elt in t]
s = ''.join(lst)
return re.sub('0x', '', s).upper()
# 设置填充的颜色
def fill_color(s):
color = PatternFill(fgColor=s, bgColor='00000000',fill_type='solid')
return color
wb = openpyxl.Workbook()
ws = wb.active
im = Image.open('t.jpg')
# 循环将像素点写入excel
for i in range(0,im.size[-1]):
for j in range(0,im.size[0]):
pixel = im.getpixel((j,i))
pixel_str = tuple2str(pixel)
print(i,j,pixel_str)
color = fill_color(pixel_str)
d = ws.cell(row=i+1, column=j+1)
d.fill = color
for col in ws.columns:
column = col[0].column
ws.column_dimensions[column].width=1
for row in ws.rows:
row = row[0].row
ws.row_dimensions[row].height=1
wb.save('out.xlsx')
输入图像为: 输出excel:
Ref: 一则新闻