使用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画画
在B站看到一个人在excel画人像,秀的一手好技术,但是作为半个程序猿有点忍不了,所以有了这个小脚本. 主要实现功能很简单,读取图片,把像素转化成excel的表格底色,保存到excel. 难点几个: ...
- #Python小技巧#教你用Python在Excel里画画
之前看到过很多头条,说哪国某人坚持了多少年自学使用 excel 画画,效果十分惊艳. 对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! imag ...
- 教你用python在excel中“画画”
有意思系列----教你用python在excel中画画 一.废话不多说,先看看成品 二.实现思路 1.图片相关知识说明 位图: 位图由一个个像素点组成,每个像素点都有自己的颜色.而我们可以操纵这些像素 ...
- 教你用Python在Excel里画画
之前看到过很多头条,说哪国某人坚持了多少年自学使用 excel 画画,效果十分惊艳. 对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! 基本思路 ...
- 如何用python在excel中画画(含GUI界面)
一.引言 最近看B站视频,有大佬徒手用excel一个格子一个格子填充,撸出了钢铁侠的图片,惊奇的同时,我思考,用python是否可以更快速的完成呢? ps:由于最近重构了下代码,因此想看最新效果图以及 ...
- python做excel表格柱状图_Python Excel 绘制柱形图
原博文 2019-11-19 22:07 − 本文主要讲述如何使用Python操作Excel绘制柱形图. 相关代码请参考 https://github.com/RustFisher/python-pl ...
- 用Python在Excel里画出蒙娜丽莎
之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳. 对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! . mona ...
- 高级操作!用 Python 在 Excel 里画出蒙娜丽莎
之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳. 对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! mona-l ...
- python读excel表格数据绘制图表_Python读取Excel数据生成图表 v2.0
原博文 2020-06-15 15:09 − ## Python读取Excel数据生成图表 v2.0 ## 一.需求背景 自己一直在做一个周基金定投模拟,每周需要添加一行数据,并生成图表.以前一直是用 ...
最新文章
- mysql 远程连接速度慢的解决方案
- 《卓有成效的管理者》——读书笔记
- 001_Maven入门
- 洛谷-数的计算-过程函数与递归
- [NewLife.XCode]实体类详解
- LeetCode 491. 递增子序列(回溯+判重剪枝)
- 将rm -f or -rf 删除命令改为放入回收站,并可通过命令将其撤回
- IDE Eclipse / Visual Studio / CodeBlocks 调试命令 step into / step over / step return 功能
- python将txt读入矩阵_python读入txt数据,并转成矩阵
- (原創) 將所有的include都寫在.h中,可避免重複include (C/C++) (C)
- SpringCloud之Hystrix断路器以及dashboard 属性详解
- Python用pyecharts绘制中国各地级市gdp分布点图
- 关于程序设计大赛环境部署的WBS图
- 论治理与创新,2022 开放原子全球开源峰会 OpenAnolis 分论坛圆满落幕
- z-index的使用小结
- jquery when Deferred
- 四位顶级AI大牛纵论:深度学习和大数据结合的红利还能持续多久?
- 这是什么“虎狼之词”啊!!!程序员的健康问题,看一线老中医怎么说!!!
- 【PC用户请留步】流氓软件卸载不了,卸载后有残留,这个软件帮你搞定!
- 水果店要什么设备,开水果店的设备