十字绣大家都知道吧,今天小编带大家来玩个电子版的十字绣。用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. mysql 远程连接速度慢的解决方案
  2. 《卓有成效的管理者》——读书笔记
  3. 001_Maven入门
  4. 洛谷-数的计算-过程函数与递归
  5. [NewLife.XCode]实体类详解
  6. LeetCode 491. 递增子序列(回溯+判重剪枝)
  7. 将rm -f or -rf 删除命令改为放入回收站,并可通过命令将其撤回
  8. IDE Eclipse / Visual Studio / CodeBlocks 调试命令 step into / step over / step return 功能
  9. python将txt读入矩阵_python读入txt数据,并转成矩阵
  10. (原創) 將所有的include都寫在.h中,可避免重複include (C/C++) (C)
  11. SpringCloud之Hystrix断路器以及dashboard 属性详解
  12. Python用pyecharts绘制中国各地级市gdp分布点图
  13. 关于程序设计大赛环境部署的WBS图
  14. 论治理与创新,2022 开放原子全球开源峰会 OpenAnolis 分论坛圆满落幕
  15. z-index的使用小结
  16. jquery when Deferred
  17. 四位顶级AI大牛纵论:深度学习和大数据结合的红利还能持续多久?
  18. 这是什么“虎狼之词”啊!!!程序员的健康问题,看一线老中医怎么说!!!
  19. 【PC用户请留步】流氓软件卸载不了,卸载后有残留,这个软件帮你搞定!
  20. 水果店要什么设备,开水果店的设备

热门文章

  1. 蓝桥杯国赛 2020-7 皮亚诺曲线距离
  2. reveal.js 入门使用方法
  3. 【报告分享】2021抖音电商产品通案-抖音电商(附下载)
  4. 基于51单片机的16X64点阵仿真
  5. HG680X 使用 A100 GPU 高负载下带宽由16x降为4x
  6. UI一揽子计划 22 (多线程概述、NSThread、NSOperationQueue 、GCD、多线程管理)
  7. 插件开发之VSCode
  8. Unity之背包系统(轻松储存10万条数据)
  9. 小程序+智能家居,生态合作新模式
  10. UE4的门模型添加碰撞