Python 实现 Excel 像素画:从图片到表格的完整教程

南乔
南乔
发布时间:2026-10-15 | 3人浏览过
原创

本文详细介绍如何利用 Python 将图片转换为 Excel 表格中的像素画。通过 Pillow 库读取图片 RGB 像素值,结合 openpyxl 库将颜色填充至单元格。教程涵盖环境安装、RGB 到十六进制色值的转换逻辑、单元格宽高调整以匹配像素比例,以及完整的代码实现与效果展示,帮助开发者掌握这一趣味编程技巧。

导语:

本文介绍一种利用 Python 读取图片像素数据,并将其输出至 Excel 表格以生成像素画(即电子版十字绣)的方法。

基本思路

实现该功能的核心逻辑是读取图片中每个像素的色彩信息,并将对应颜色填充到 Excel 的单元格中。为此,需要安装 Pillow 库用于图片处理,以及 openpyxl 库用于操作 Excel 文件。


pip3 install openpyxl
pip3 install Pillow

色值转换

图片像素通常以 RGB 格式表示,而 openpyxl 设置单元格背景色需要使用十六进制颜色代码。因此,首先需要编写一个函数,用于将 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` 来避免重复调整列宽,从而提高效率。

图片转换

在具备色值转换函数后,下一步是逐行读取图片的 RGB 色值,将其转换为十六进制格式,并填充到 Excel 对应的单元格中。


def img2excel(img_path, excel_path):
    img_src = Image.open(img_path)
    # 图片宽高
    img_width = img_src.size[0]
    img_height = img_src.size[1]
 
    str_strlist = img_src.load()
    wb = openpyxl.Workbook()
    wb.save(excel_path)
    wb = openpyxl.load_workbook(excel_path)
    cell_width, cell_height = 1.0, 1.0
 
    sheet = wb["Sheet"]
    for w in range(img_width):
        for h in range(img_height):
            data = str_strlist[w, h]
            color = str(data).replace("(", "").replace(")", "")
            color = rgb_to_hex(color)
            # 设置填充颜色为 color
            fille = PatternFill("solid", fgColor=color)
            sheet.cell(h + 1, w + 1).fill = fille
    for i in range(1, sheet.max_row + 1):
        sheet.row_dimensions[i].height = cell_height
    for i in range(1, sheet.max_column + 1):
        sheet.column_dimensions[get_column_letter(i)].width = cell_width
    wb.save(excel_path)
    img_src.close()

最后定义一个入口函数,即可完成整个流程。


if __name__ == '__main__':
    img_path = '/Users/xyz/Documents/tmp/03.png'
    excel_path = '/Users/xyz/Documents/tmp/3.xlsx'
    img2excel(img_path, excel_path)

惊艳时刻

接下来展示最终生成的 Excel 像素画效果。

观察生成的图像,是否感受到独特的像素艺术韵味?

总结

本次代码分享至此结束,如果喜欢请收藏本文。

到此这篇关于 Python 居然可以在 Excel 中画画你知道吗的文章就介绍到这了,更多相关Python Excel画画内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表