神操作!竟然有人用Python在Excel中画画,女神看了直呼震惊
创始人
2024-03-25 12:59:24
0

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

用 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.0sheet = 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)# 设置填充颜色为 colorfille = PatternFill("solid", fgColor=color)sheet.cell(h + 1, w + 1).fill = fillefor i in range(1, sheet.max_row + 1):sheet.row_dimensions[i].height = cell_heightfor i in range(1, sheet.max_column + 1):sheet.column_dimensions[get_column_letter(i)].width = cell_widthwb.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 中然后发她,你猜女神会不会被惊艳到呢。

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

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...