神操作!竟然有人用Python在Excel中画画,女神看了直呼震惊

news2024/11/17 9:43:05

十字绣大家都知道吧,今天咱们来玩个电子版的十字绣。

用 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)

惊艳时刻

激动的心,颤抖的手,来看下最终效果咋样。

 

是不是觉得有那么一丝丝韵味呢...

总结

今天带大家一起实现了 Excel 像素画,小伙伴们可以发挥自己的想象,比如把女神的头像藏进 Excel 中然后发她,你猜女神会不会被惊艳到呢。

以上就是本次分享的所有内容,如果你觉得文章还不错,欢迎点赞收藏,评论区下方留言你的想法吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做更真实的实验!艾美捷Caspase-1活性分析试剂盒方案

FLICA 是通过检测来评估细胞死亡的有力方法体外凋亡。免疫化学技术(ICT)FLICA 荧光标记的抑制剂与活性半胱天冬酶共价结合的CAspa酶1,2。FLICA测量细胞内的凋亡过程,而不是副作用,如磷脂酰丝氨酸的翻转,并消除假阳性的…

iOS视频编码实战VideoToolbox

需求 iOS中编码视频数据,一般情况而言一个项目仅需要一个编码器,不过有时特殊需求可能需要两个编码器同时工作.本例中实现了编码器类.仅通过指定不同编码器的枚举值就可以快速生成需要的编码器,且支持两个编码器一起工作. 实现原理: iOS中利用VideoToolBox框架完成视频硬编码…

TS201的Flag输出状态控制LED亮灭原理和例程(含参考代码)

目的: 理解FLAG可编程作为输入输出引脚,并且能够利用按键进行相应FLAG(FLAG0,FLAG1)标志的输入来相应的FLAG标志(FLAG2,FLAG3)输出来控制与之相连的LED。掌握外部中断和定时器中断的设置以及其响应过程,理解外部硬件可…

hevc帧内planer预测模式和角度预测模式

帧内planer预测模式 planer预测模式适用于纹理相对平缓的图像区域,对于各个编码宏块而言,它不但能保持图像宏块边界良好的连续性。而且可以利用平面梯度信号随像素值的变化趋势而变化,在Planer预测模式下,可以将预测像素Px,y 看作…

企业应收账款管理存在的问题及对策

应收账款也就是信用交易,企业应收账款的产生是企业采取信用销售方式的必然结果。 现如今信用交易已经成为企业提高竞争力、扩大销售的必要手段,它充分挖掘和利用了企业的现有生产能力,扩大了销售量,增加了产品的市场份额&#xf…

潮玩积木国产化浪潮里,“中国积木”的自证之路

随着Z世代的崛起,潮玩从小众兴趣领域进入大众视野。 其中,作为年轻人喜爱的潮流品类之一,拼搭积木正在成为潮玩赛道的新风口。 哪怕疫情影响下,作为非必需消费品的积木仍然保持着中高速市场增长,足以被视为消费领域的…

[附源码]计算机毕业设计路政管理信息系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

ChatGPT入门指南

ChatGPT入门指南什么是ChatGPT?为什么ChatGPT意义重大?如何使用ChatGPT什么是ChatGPT? ChatGPT是基于聊天的生成预训练transformer模型的缩写,是一个强大的工具,可以以各种方式使用,以提高您在许多领域的生…

【Python】基础语法 3 (函数)

函数详解1. 函数是什么2. 语法格式3. 函数参数4. 函数返回值5. 变量作用域6. 函数执行过程7. 链式调用8. 嵌套调用9. 函数递归10. 参数默认值11. 关键字参数1. 函数是什么 编程中的函数和数学中的函数有一定的相似之处。 数学上的函数,比如 y sinx,x 取…

如何创建微信小程序?【创建小程序】

如何创建微信小程序呢?这是很多没有小程序的小伙伴经常问的问题,现在小程序给我们带来很多便利,而且很多企业公司也会有自己的小程序提供给他们的客户使用。那么创建微信小程序的步骤是什么呢,下面跟大家说说如何创建微信小程序。…

centos 模拟路由器功能实现内网和外网的联通

如下图的网络结构 192.168.65.128是一个windows主机,仅链接vmnet1的网卡。属于内网,无法连接外网,路由如下: IPv4 路由表 活动路由: 网络目标 网络掩码 网关 接口 跃点数 127.0.0.0 255.…

飞剪、追剪算法详细图解(附PLC完整源代码)

谈到运动控制就离不开编码器,有关编码器测速,测距的相关内容,大家可以查看专栏的其它文章,和飞剪控制息息相关的编码器测速,请参看下面的博客,链接如下: 如何通过编码器信号计算输送线/输送带线速度(飞剪、追剪算法基础)_RXXW_Dor的博客-CSDN博客不同品牌PLC如何采集…

Acrel-2000Z电力监控系统在重庆五桂堂历史文化商业街区的应用-Susie 周

1、项目概述 据悉原五桂堂街是一条上百年的地地道道的涪陵“老街”,北起火神庙(后来的铁器社)西侧,南止天主堂大门前横街尽头,长约200米,宽约2米,该项目建设地点位于重庆市涪陵区敦仁街道望栏桥…

设备树(Device Tree)

设备树介绍: 设备树是一个描述设备硬件资源的文件,该文件是由节点组成的树形结构。如下: / { node1 { a-string-property "A string"; a-string-list-property "first string", "second string"; // hex is …

Linux磁盘管理

Linux磁盘管理实验目的及要求1.熟悉Linux下磁盘的基本管理方法。2.了解Linux磁盘配额管理的意义和基本方法。3.掌握mount、fdisk、df等常用的磁盘管理命令。实验原理实验步骤1.使用不同的方法挂载/卸载磁盘并查看相关信息,具体步骤如下:1.挂载一个光驱或…

简述人工神经网络的定义,简述神经网络算法

1、人工智能十大算法 人工智能十大算法如下 线性回归(Linear Regression)可能是最流行的机器学习算法。线性回归就是要找一条直线,并且让这条直线尽可能地拟合散点图中的数据点。它试图通过将直线方程与该数据拟合来表示自变量(x…

mapbox一学就会系列:01 第一个地图页面

文章目录前言一、mapbox是什么?官网官网示例效果尝鲜二、使用步骤1.引入mapbox-gl.js库在线库npm 形式安装2.使用方法无账号则申请,有账号则登录申请完成后,获取token创建一个地图元素容器使用token并配置创建一个地图示例效果总结前言 最近…

PMP项目管理证书有用么?什么人可以考呢?

有用,非常有用,PMP如今的价值在于越来越多的招聘和公司都需要PMP证书,有需求就有价值。(资料文末) 需求分两个方面来说,一个是个人,一个是组织。 个人的用处: 项目管理几乎不限行业…

fasterxml jaskson的使用

fasterxml jaskson 的使用为啥要撰写这玩儿?解析json格式字符串判断是否是json格式字符串解析原理与解析函数如何使用该函数?为啥要撰写这玩儿? 由于SpringBoot的依赖默认使用fasterxml-jaskson(可能是由于不想使用其他json处理包…

[附源码]Python计算机毕业设计Django疫苗及注射管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…