导语:
哈喽,哈喽~对于Excel大家想到的是不是各种图表制作,今天我们来个不一样的。十字绣大家都知道吧,今天咱们来玩个电子版的十字绣。
用 Python 读取图片的像素值,然后输出到 Excel 表格中,最终形成一幅像素画,也就是电子版的十字绣了。
基本思路
实现这个需求的基本思路是读取这张图片每一个像素的色彩值,然后给 excel 里的每一个单元格填充上颜色。既然要读取图片,那就需要用到 Pillow 库,操作 Excel 需要用到 openpyxl 库,先把这两个库安装好。
pip3 install openpyxl
pip3 install Pillow
色值转换
从图片读取的像素块色值是 RGB 值,而 openpyxl 向 Excel cell 内填充颜色是十六进制色值,因此咱们先写一个 RGB 和十六进制色值转换的一个函数。
def rgb_to_hex(rgb):
rgb = rgb.split(',')
color = ''
for i in RGB:
num = int(i)
color += str(hex(num))[-2:].replace('x', '0').upper()
return color
excel 的单元格默认是长方形,修改为正方形才不会使图片变形
if h == 1:
_w = cell.column
_h = cell.col_idx
# 调整列宽
worksheet.column_dimensions[_w].width = 1
# 调整行高
worksheet.row_dimensions[h].height = 6
这里用到了双重for循环,外层是`width`,里层是`height`,是一列一列的填充颜色,因此判断`if h == 1`,避免多次调整列宽。</

本文介绍了一种使用Python将图片转化为Excel像素画的独特方法。通过读取图片像素RGB值,转换为十六进制色值,并填充到Excel单元格中,最终在Excel中形成像素画。详细步骤包括色值转换、调整单元格为正方形以保持图片比例,以及图片数据的填充。文章展示了这种‘电子十字绣’的惊艳效果。

被折叠的 条评论
为什么被折叠?



