上面是枫叶的简笔图,我们怎么用python程序来完全模拟以上的图片呢?01今天为大家带来用python画枫叶的详细过程。
首先,我们保存上面的图片为“枫叶.jpg”,放到python的目录下。打开python编辑器(本篇使用的pycharm)
函数实现
导入所需的库函数:
from PIL import Image
import turtle as t
接下来,通过PIL读取图片的信息,对接turtle画图库完成绘制过程。
读取图片的函数:
def leave(path):
img = Image.open(path) # 读取图像
global size
size=img.size
pix = img.load()
list = [[] for i in range(size[1])] # 构造空列表
for i in range(0, size[1]): # 从第一行开始循环
k = 0
for j in range(0, size[0]-1):
# 如果当前像素与下一个像素值不同且两者有一为背景色,则记录坐标
if pix[j, i] != pix[j + 1, i] and (255, 255, 255) in [pix[j, i], pix[j + 1, i]]:
if k == 0: # index值为0说明是像素条起始坐标
list[i].append([j + 1, ])
k += 1
else: # index值为1说明记录的是像素条结束坐标
list[i][-1].append(j)
k = 0
return list
绘制的函数:
def draw(path):
l=leave(path)
# 绘图窗口大小
t.screensize(canvwidth=size[0], canvheight=size[1],bg='white')
t.speed(1000)
for i in range(0, size[1]):
# 遍历每一行
t.pencolor('black')
for line in l[i]:
# 遍历每一个像素条
t.penup()
t.goto(line[0] - size[0] // 2, (size[1] - i) - size[1] // 2)
t.pendown()
t.goto(line[1] - size[0] // 2, (size[1] - i) - size[1] // 2)
t.mainloop()
最后,调用函数,运行程序:
draw('枫叶.jpg')
运行结果
turtle努力绘画中......
(画笔有一点粗反而让图片更好看了)
过了几分钟。。。
又过了几分钟。。。
终于画完了,turtle表示过度劳累。。。
今天的内容就到这了,我是01,我们明天再见!(觉得好玩的小伙伴关注我吧)