良许Linux教程网 干货合集 通过Python在Excel画画

通过Python在Excel画画

十字绣大家都知道吧,今天小编带大家来玩个电子版的十字绣。用Python读取图片的像素值,然后输出到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

图片转换

有了色值转换函数,接下来要做的操作就是逐行读取图片的 RGB 色值,之后将 RGB 色值转换为十六进制色值填充到 Excel 的 cell 中即可。

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)

惊艳时刻

激动的心,颤抖的手,来看下最终效果咋样。 使用Python在Excel画画使用Python在Excel画画

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300

本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部