十字绣大家都知道吧,今天小编带大家来玩个电子版的十字绣。用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画画相关推荐

  1. 用python在excel画画

    在B站看到一个人在excel画人像,秀的一手好技术,但是作为半个程序猿有点忍不了,所以有了这个小脚本. 主要实现功能很简单,读取图片,把像素转化成excel的表格底色,保存到excel. 难点几个: ...

  2. #Python小技巧#教你用Python在Excel里画画

    之前看到过很多头条,说哪国某人坚持了多少年自学使用 excel 画画,效果十分惊艳. 对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! imag ...

  3. 教你用python在excel中“画画”

    有意思系列----教你用python在excel中画画 一.废话不多说,先看看成品 二.实现思路 1.图片相关知识说明 位图: 位图由一个个像素点组成,每个像素点都有自己的颜色.而我们可以操纵这些像素 ...

  4. 教你用Python在Excel里画画

    之前看到过很多头条,说哪国某人坚持了多少年自学使用 excel 画画,效果十分惊艳. 对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! 基本思路 ...

  5. 如何用python在excel中画画(含GUI界面)

    一.引言 最近看B站视频,有大佬徒手用excel一个格子一个格子填充,撸出了钢铁侠的图片,惊奇的同时,我思考,用python是否可以更快速的完成呢? ps:由于最近重构了下代码,因此想看最新效果图以及 ...

  6. python做excel表格柱状图_Python Excel 绘制柱形图

    原博文 2019-11-19 22:07 − 本文主要讲述如何使用Python操作Excel绘制柱形图. 相关代码请参考 https://github.com/RustFisher/python-pl ...

  7. 用Python在Excel里画出蒙娜丽莎

    之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳. 对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! . mona ...

  8. 高级操作!用 Python 在 Excel 里画出蒙娜丽莎

    之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳. 对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! mona-l ...

  9. python读excel表格数据绘制图表_Python读取Excel数据生成图表 v2.0

    原博文 2020-06-15 15:09 − ## Python读取Excel数据生成图表 v2.0 ## 一.需求背景 自己一直在做一个周基金定投模拟,每周需要添加一行数据,并生成图表.以前一直是用 ...

最新文章

  1. 熟悉Linux实验实训,非常详细的Linux操作系统与实训教程实验(三)
  2. axure9中继器添加一列序号自增_中继器如何做简单穿梭框
  3. 用计算机自我介绍,计算机个人简历:计算机专业简历自我介绍【四篇】供参考使用(5页)-原创力文档...
  4. Android开发之开发工具之Android Studio出现全屏的解决办法
  5. 云计算三大主流阵营的竞争与合作
  6. QT每日一练day29:QT中的多线程探究
  7. Docker学习之守护进程
  8. 【POJ 1733】Parity game【带权并查集维护奇偶】
  9. 给idea换自定义背景图片的快捷键
  10. HTML小游戏4 —— 简易版英雄联盟(附完整源码)
  11. Unity优化——模型合并
  12. 基于Python的作业自动批改系统
  13. Mybatis学习笔记_5、Mybatis动态SQL
  14. 怎么在Mysql中添加列_mysql如何给表中添加列(字段)?
  15. 洛谷 P4707 【重返现世】
  16. 2020年度开发者工具Top 100名单!
  17. /var/jenkins_home/workspace/demo_pipeline/env@tmp/durable-d9b28a5c/script.sh: /root/maven/apache-mav
  18. 有一种胸襟,叫“我搭台 你唱戏” 有一种气魄,叫“我做平台 大家赚钱”
  19. JumpServer开源堡垒机部署
  20. 敏捷团队Git分支版本管理策略| TBD++ Flow

热门文章

  1. MATLAB抽样定理实验
  2. java实现word导入导出富文本(含图片)-附完整测试用例
  3. SpringBoot 微信小程序 二手汽车交易系统 二手手机交易系统
  4. 小孩子们都回去准备开学了儿子也准备上小班
  5. jquery.reveal_使用jQuery Reveal插件构建弹出模态窗口
  6. 【随机森林】random forests 简单介绍
  7. pytorch之打印网络节点
  8. unity3d实现插件快速开发对话系统
  9. 给予有效的360度反馈的5个提示
  10. 【Excel】excel多个单元格的内容合并到一个单元格,并使用分隔符