excel怎么画像素画(居然有人用)
十字绣大家都知道吧,今天咱们来玩个电子版的十字绣。
用 Python 读取图片的像素值,然后输出到 Excel 表格中,最终形成一幅像素画,也就是电子版的十字绣了。
准备既然要读取图片,那就需要用到 Pillow 库,操作 Excel 需要用到 openpyxl 库,先把这两个库安装好。
$ pip3 install openpyxl
$ pip3 install Pillow
色值转换干货主要有:
① 200 多本 Python 电子书(和经典的书籍)应该有
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且可靠的练手项目及源码)
④ Python基础入门、爬虫、网络开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
私信小编01即可获取大量Python学习资源
从图片读取的像素块色值是 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 中然后发她,你猜女神会不会被惊艳到呢。
对此你还有什么好玩的想法,可以在评论区和其他小伙伴一起交流哦~
,- 报考函授本科有用吗(函授本科报名时间)
- 支付宝高速费怎么支付(车牌付风头正热)
- 说猫有九条命这是真的吗(为什么说猫有九条命)
- 三通一达的快递企业有什么(快递巨头三通一达老板全是浙江人)
- 娃娃古装衣服简单做法(「图文教程」古装娃衣)
- 怎样加入微商做代理(年销售2亿元的微商大代理是如何炼成的)
- 单招吃香的专业有哪些(院校)
- 男人脸上哪些痣不能点掉图解(千万别点掉)
- cad选择技巧有哪些(网友)
- 干炸豆腐肉丸子家常做法(一起来做干炸豆腐肉丸子)
- 荣耀怎么关闭隐私空间(9)
- 思克莱德大学难申请吗(英国大学排名偏后的学校offer通过率也不高)
- 想表白没勇气怎么办(不敢表白)
- 100组反义词(强烈建议家长收藏)
- 如何查看粘贴历史记录(剪切的东西不见了怎么找回来)
- 补血养颜茶配方和宜忌(不妨多喝这4款“养颜茶”)
- 新年祝福语2022简短八字(竟然与壬寅虎年的五行色彩有关)
- have 和has 的区别用法(一般过去时和现在完成时的用法及区别习题)