实现原理很简单,扫描图片像素点,识别出RGB数值后,转成单位格颜色填充到excel里。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200731221130353.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xld3l1NTIx,size_16,color_FFFFFF,t_70)
由于涉及到大量计算,图片最好不要超640480像素。* 废话不多说,直接上代码
from PIL import Image
import openpyxl
from openpyxl.styles import PatternFill, Fill
# 图片最好不要超640*480!!!!!!!!!!
imageFileName = 'ycy.jpg' # 图片文件名
image = Image.open(imageFileName) # 打开图片
wb = openpyxl.Workbook() # 创建Excel
sheet = wb.create_sheet(imageFileName) # 创建sheet
sheet.column_dimensions.width = 20.0
sheet.row_dimensions.height = 20.0
imgW, imgH = image.size # 获取图片大小
print(imgW)
for w in range(imgW):
print(w)
print("---------------")
print(imgW)
for h in range(imgH):
# 将每个像素的颜色填充到对应cell的背景色中
rgba = image.getpixel((w, h))
colorHex = hex(rgba[0])[2:].zfill(2) + hex(rgba[1])[2:].zfill(2) + hex(rgba[2])[2:].zfill(2)
fill = PatternFill(fill_type='solid', start_color=colorHex, end_color=colorHex)
sheet.cell(row=h + 1, column=w + 1).fill = fill
wb.save(imageFileName + '.xlsx') # 保存xlsx文件
print("done!")
# xcel里显示如果有图像变形,是因为电脑分辨率的原因
原图: | | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200731220946556.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xld3l1NTIx,size_16,color_FFFFFF,t_70)
|