生成一張純色的圖片

為揭西等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及揭西網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、揭西網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
先設(shè)置圖片的顏色,接著利用Image模塊的new方法新生成一張圖片,png格式的圖片需要設(shè)置成rgba,類似的還有rgb,L(灰度圖等),尺寸設(shè)定為640,480,這個(gè)可以根據(jù)自己的情況設(shè)定,顏色同樣如此。
批量生成圖片
上面生成了一張圖片,那要生成十張圖片呢,這種步驟一樣,只是顏色改變的,利用循環(huán)就可以解決。首先創(chuàng)建一個(gè)顏色列表,把要生成的圖片顏色放進(jìn)去。接著循環(huán)獲取不同的顏色,保存的時(shí)候利用字符串拼接的方法改變圖片的名字。
本地生成的圖片
封裝成函數(shù)
前面的方法已經(jīng)可以批量生成圖片了,為了通用性強(qiáng)一點(diǎn),我們可以封裝成函數(shù),把哪些可以改變的參數(shù)單獨(dú)抽離出來。尺寸也同樣,使用的時(shí)候,可以根據(jù)自己的需要定義顏色列表和尺寸。當(dāng)然還有加一些提示用語和報(bào)錯(cuò)兼容性,這里就不講了。
本地生成的圖片
要用到turtle庫中的函數(shù),
turtle庫是一個(gè)繪制圖像的函數(shù)庫,橫軸為x軸,縱軸為y軸
def 表示用戶自定義函數(shù),drawsnake為函數(shù)名,()中為函數(shù)參數(shù)
定義顏色
循環(huán) len 次,i用來計(jì)數(shù)
pencolor() 函數(shù),改變畫筆顏色,參數(shù)為顏色
circle( ?, ?) ? 函數(shù),畫圓,第一個(gè)參數(shù)為半徑,正數(shù)表示在左側(cè),負(fù)數(shù)表示在右側(cè),第二個(gè)參數(shù)為圓形的弧度值。
fd()函數(shù),畫直線,參數(shù)為直線長度
fd()函數(shù),畫直線,參數(shù)為直線長度
用戶自定義函數(shù) ?main()
setup ( ?, , , ) 函數(shù),啟動(dòng)圖形窗口,四個(gè)參數(shù)分別是,寬度,高度,窗口左上角在屏幕中的x坐標(biāo)和y坐標(biāo)。
定義畫筆寬度
pensize() 函數(shù),畫筆寬度,30像素
seth() 函數(shù),畫筆啟動(dòng)時(shí)的方向,其中參數(shù),0表示東,順逆時(shí)針方向度數(shù)遞增。
調(diào)用drawsnake函數(shù)
調(diào)用main函數(shù)
[Turtle]庫的使用
打開窗口:turtle.setup(650,350,200,200)
窗口的大小:width:650 height:350
窗口的位置:在屏幕的(200,200),默認(rèn)情況下在屏幕的中心位置
畫筆抬起,不留下痕跡:turtle.penup()
改變畫筆的位置:turtle.fd(-250) 可用turtle.forward(-250)代替
畫筆向后倒退250,默認(rèn)情況下在窗口的正中心位置
畫筆落下,留下痕跡:turtle.down()
改變畫筆的粗細(xì):turtle.pensize(25)
改變畫筆的顏色:turtle.pencolor(“purple”)
改變畫筆的前進(jìn)方向:turtle.seth(-40)可用turtle.heading(-40)代替
畫筆此時(shí)指向-40°的方向
循環(huán):range(4)函數(shù)
參數(shù)是幾就循環(huán)幾次
for i in range(4):i的范維是[0,4)
畫圓弧:turtle.circle(40,80); turtle.circle(-40,80)
40是圓弧的半徑,代表以畫筆所在位置的左側(cè)距離40的地方為圓心
-40代表畫筆所在位置右側(cè)距離40的地方為圓心
80是代表弧度80的圓弧
畫直線:turtle.fd(40)
畫筆向前移動(dòng)40
因?yàn)楫嫻P已經(jīng)落下,所以屏幕中有畫筆的痕跡
畫筆停止繪制,但窗口不關(guān)閉:turtle.done()
程序運(yùn)行結(jié)果:
如果能夠找到規(guī)律,可以讓代碼變得更簡單。上述代碼中其實(shí)就是調(diào)用circle()函數(shù)四次,每次傳入?yún)?shù)不同而已。
我們可以加入循環(huán),循環(huán)就是重復(fù)不停地做相同的事情;再找到循環(huán)變量和畫圓參數(shù)之間的規(guī)律即可。
第一個(gè)圓的半徑為50,每次按15的節(jié)奏遞減,直到繪制完半徑為5的圓。這樣就可以使用range()函數(shù),傳入如下參數(shù):range(50,0,-15)。
或者由小到大繪制,傳入這樣的參數(shù)也可以:range(5,51,15)。
還可以這樣:循環(huán)四次,循環(huán)變量i依次為0、1、2、3,再在繪制圓的過程中構(gòu)造遞減的表達(dá)式:100/2-i*15。
分析這個(gè)表達(dá)式,當(dāng)i等于0時(shí),結(jié)果為50,繪制半徑為50的圓;當(dāng)i等于1時(shí),結(jié)果為35,繪制半徑為35的圓……正好符合題目要求的參數(shù)值。
【擴(kuò)展】思考如何繪制以坐標(biāo)原點(diǎn)為中心的同心圓呢?
仔細(xì)觀察畫筆繪制圓的軌跡,可發(fā)現(xiàn):默認(rèn)小海龜從坐標(biāo)原點(diǎn)出發(fā),逆時(shí)針旋轉(zhuǎn)一圈畫圓;然后,再回到起始點(diǎn)。
所以,繪制同心圓。我們需要將畫筆向下移動(dòng)一定的距離,即改變y的坐標(biāo),x坐標(biāo)保持不變?yōu)?。參考代碼如下:
循環(huán)體內(nèi),每次需要抬筆和落筆功能。
02
案例二:繪制一個(gè)正多邊形
繪制正多邊形有這樣一個(gè)結(jié)論:用360°去除以繪制的邊數(shù),即可得到旋轉(zhuǎn)角度。
比如:正三角形的旋轉(zhuǎn)角度(360/3=120°)、正四邊形的旋轉(zhuǎn)角度(360/4=90°)、正八邊形的旋轉(zhuǎn)角度(360/8=45°)。其他以此類推。
那么,我們要繪制一個(gè)正八邊形呢?
使用循環(huán)結(jié)構(gòu),循環(huán)八次。每次前移一定距離,再旋轉(zhuǎn)(360/邊數(shù))的角度,這里旋轉(zhuǎn)的就是45°角。參考代碼如下:
有了這樣的結(jié)論,其他的正多邊形都可以信手拈來,小菜一碟了。只需要稍微改幾個(gè)參數(shù)即可。
03
案例三:繪制由多種顏色組成的正螺旋線
比如,這樣的圖形:
這是由八種顏色組成的正八邊形螺旋線結(jié)構(gòu)圖,顏色依次為:紅(red)、綠(green)、藍(lán)(blue)、黃(yellow)、紫(purple)、橙(orange)、黑(black)、粉(pink)等八種。
繪制思路:
首先,需要?jiǎng)?chuàng)建一個(gè)顏色列表list,含有八種顏色元素。
第二,前移一定距離,這個(gè)距離值是由小到大逐級遞增的過程。
第三,旋轉(zhuǎn)一定角度,可參照案例二的結(jié)論。
最后,考慮畫筆的顏色,每8次(邊數(shù))為一個(gè)周期循環(huán)顏色列表。
參考代碼如下:
其他的正螺旋線,也是如此規(guī)律。
【擴(kuò)展】如果是有一定旋轉(zhuǎn)角度的螺旋線呢?比如,這樣的圖形:
解題思路:只需要在正螺旋線的基礎(chǔ)上,讓旋轉(zhuǎn)角度多偏移1-2°即可。修改上述案例中最后一行的代碼:
示例代碼
# 導(dǎo)入Tkinter模塊
from tkinter import *
# 創(chuàng)建一個(gè)窗口
window = Tk()
# 定義一個(gè)函數(shù),用來生成圖形
def generate_shape():
# 使用隨機(jī)數(shù)生成不同的圖形和顏色
shape = random.choice(["circle", "square", "triangle"])
color = random.choice(["red", "green", "blue"])
# 使用隨機(jī)數(shù)生成不同的位置
x = random.randint(0, 200)
y = random.randint(0, 200)
# 在窗口中繪制圖形
if shape == "circle":
# 繪制圓形
canvas.create_oval(x, y, x + 50, y + 50, fill=color)
elif shape == "square":
# 繪制正方形
canvas.create_rectangle(x, y, x + 50, y + 50, fill=color)
else:
# 繪制三角形
points = [x, y, x + 50, y + 50, x + 25, y + 75]
canvas.create_polygon(points, fill=color)
# 創(chuàng)建一個(gè)畫布
canvas = Canvas(window, width=200, height=200)
canvas.pack()
# 創(chuàng)建一個(gè)按鈕
button = Button(window, text="Start", command=generate_shape)
button.pack()
# 進(jìn)入消息循環(huán)
window.mainloop()
網(wǎng)站名稱:顏色循環(huán)函數(shù)Python 顏色的函數(shù)
本文URL:http://chinadenli.net/article12/hpecdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、、網(wǎng)站導(dǎo)航、電子商務(wù)、移動(dòng)網(wǎng)站建設(shè)、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)