news 2026/11/6 1:54:32

有趣的Python:Excel作画

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
有趣的Python:Excel作画

这是一个很有意思的事情, 那就是使用Excel来进行绘画创作。

前一段时期有朋友看见一则新闻叫做日本74岁老人用Excel画画, 栩栩如生, 这事情确实是很美的, 很多的网民看了之后发出了感叹说, 我可能用了假的Excel。

作为一个从事编程工作的人员, 虽然他在绘画那种艺术方面的天赋是比较缺少的, 但是他在利用程序的手段来对数字化信息进行处理的方面是特别擅长的。把话说得简单直接一点就是, Excel这个软件生成的文件本质上来说也是一种数字化的文件类型。

那么接下来只需要从一个目前已经存在的图像文件当中提取出每一个像素点的具体颜色数据值, 然后把这些颜色数值再逐一填充到Excel表格里面对应的单元格区域之中去。通过这样的操作步骤, 最终不就是成功地实现了在Excel里面完成绘画创作这样的一个目标了吗。

能做什么就做什么, 具体的实现方案如下所示。

from openpyxl import Workbook

from openpyxl.utils import get_column_letter

from openpyxl.styles import PatternFill, Color

from PIL import Image

# 定义常量

IMAGE_FILE = 'starsky.jpg' # 图片的文件名

IMAGE_MAX_SIZE = 400 # 图片长边像素的最大值,如果超出此值,将缩小图片。

img = Image.open(IMAGE_FILE)

print('image\'s type is %s' % img.format)

# 修正图片尺寸

img_width, img_height = img.size

print('image\'s size is (%s, %s)' % (img_width, img_height))

if img_width > IMAGE_MAX_SIZE:

img_height = int(img_height * IMAGE_MAX_SIZE / img_width)

img_width = IMAGE_MAX_SIZE

if img_height > IMAGE_MAX_SIZE:

img_width = int(img_width * IMAGE_MAX_SIZE / img_height)

img_height = IMAGE_MAX_SIZE

img.thumbnail((img_width, img_height)) # 缩小图片尺寸

print('image\'s new size is (%s, %s)' % (img_width, img_height))

# 由于excel对单元格填充色有要求,所以用以下两行代码把图片转换为8位色值

img = img.convert('P')

img = img.convert('RGB')

pix = img.load()

workbook = Workbook()

worksheet = workbook.active

print('begin convert, please waiting...')

# 获取每个像素的色值,并填充到单元格

for row in range(1, img_height):

for col in range(1, img_width):

cell = worksheet.cell(column=col, row=row)

point = pix[col-1, row-1]

color = "FFXXX" % (point[0], point[1], point[2])

cell.fill = PatternFill(patternType='solid', fgColor=Color(rgb=color))

worksheet.row_dimensions[row].height = 6

for col in range(1, img_width):

worksheet.column_dimensions[get_column_letter(col)].width = 1

# 保存生成的excel文件

workbook.save(filename='output.xlsx')

print('Complete.')

你先去把一个叫“星空”的东西给下载下来, 这个“星空”是梵高弄出来的东西, 然后在电脑上执行写在那上面的程序。

"C:\Program Files\Python36\python.exe"

image's type is JPEG

image's size is (658, 483)

image's new size is (400, 293)

begin convert, please waiting...

Complete.

打开生成的那个带有 .xlsx 这个后缀名字的文件, 这里有一张截图, 它显示了最终的效果。

当你把画面放到百分之百的实际大小的时候, 就能看到明显的马赛克的那种效果。

把那个显示的比例调小一点, 这样就能看清楚全部的图了, 它现在的效果就是这样子的。

把显示比例调小, 然后看那个全图效果。

上面这些东西做起来其实挺有意思的, 尽管眼下还没办法拿来用, 但是大家只要能把下面介绍的这些知识全都学习到。

另外:

那位来自日本的年长前辈所创作的初始画稿是出自他自己本人的原创之手, 这确实是让人佩服的事情, 正因为见识广泛并且懂得很多东西, 所以才能够去向那些高明的人进行学习, 进而拓展自己的思路。

最终是在2019年, 3月17日的那个时候, 把更新时间定格在了晚上,也就是22点25分又31秒这个时刻。

©该作品的著作权属于作者, 如果你需要转载或合作关于内容的事情, 请联系作者。

社区里面有一部分的内容可能是借助了人工智能技术来帮忙生成的, 所以在浏览的过程当中, 大家要靠着正常的常识还有从好几个渠道拿到的信息一起, 小心谨慎地去分辨一下真假好赖。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 1:52:59

FDE:AI时代的前沿部署工程师,月薪可达35万,小白也能学

FDE(前线部署工程师)是当前最热门、最神秘的AI岗位之一,大厂纷纷开出高薪招聘。本文深入解析FDE的工作内容、发展现状及未来趋势,揭示AI时代FDE的核心价值:不仅懂技术,更要懂业务、懂人性,成为连…

作者头像 李华
网站建设 2026/11/6 1:52:58

推理 INFRA 方法论(7):核心优化:CUDA Graph、投机推理、Overlap 与量化

博客:Johney Zheng 的博客 全部文章索引 本文原文 把前面各篇的瓶颈诊断落实到执行机制,梳理图捕获、投机验证、多流依赖、算子融合和低精度 kernel 的适用边界。 CUDA Graph 核心机制:capture 阶段把一段 stream 上的 kernel launch 序列录成图(节点…

作者头像 李华
网站建设 2026/11/6 1:52:30

动态数组:添加数据

概述 本文主要解释了核心概念何为动态数组,以及为动态数组添加第一个功能(添加数据)并将输出数组,扩容,添加数据,删除数据,插入数据的功能写成函数的形式。 一、核心概念阐述 1,动态…

作者头像 李华
网站建设 2026/11/6 1:49:49

基于STM32F103C8T6的温度报警器设计

目录 1、前言 2、主要功能 3、源程序 4、原理图和PCB图 PDF原理图 PCB顶层和底层图 5、实物图 6、设计报告 7、资料清单 8、资料获取 1、前言 该设计是一种基于STM32单片机的温度检测报警器。在硬件方面主要采用STM32F103C8T6作为主控核心,结合数字温度传…

作者头像 李华
网站建设 2026/11/6 1:49:13

Zed官宣:支持Python Pyrefly,速度起飞

Zed 作为用 Rust 写的原生编辑器,一直以来的卖点就是“快得让人头皮发麻”。现在,他们觉得光编辑器快还不够,连写 Python 的那个“语言服务器(LSP)”也得换成超跑级别的。 Zed 已经把 Pyrefly 这个由 Meta 打造的、用 …

作者头像 李华