python简笔画绘制 数据驱动绘图_python:绘制枫叶简笔画
上面是楓葉的簡筆圖,我們怎么用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,我們明天再見!(覺得好玩的小伙伴關注我吧)
總結
以上是生活随笔為你收集整理的python简笔画绘制 数据驱动绘图_python:绘制枫叶简笔画的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中home定义是什么_第48
- 下一篇: python多线程执行_python多线