日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python制作中秋贺卡_中秋节到了,送你一个Python做的Crossin牌“月饼”

發布時間:2024/9/19 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python制作中秋贺卡_中秋节到了,送你一个Python做的Crossin牌“月饼” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

明天是難得一見的國慶中秋雙節合一,在這里除了祝大家節日快樂之外,我們還要送上一個“月餅”——當然這個月餅是不能吃的,因為它是用python做的。先給大家看一下效果圖。圖1. 月餅效果圖

畫這樣一個月餅,其實不需要太多的代碼,筆者只用了不到50行代碼,而且用的是我們經常用到的繪圖庫matplotlib,這對于我們大部分人來說是很容易上手的,下面筆者就詳細介紹一下怎么畫這樣一個月餅。

首先導入各種需要的庫:

import numpy as np

from numpy import sin, cos, pi

import matplotlib.pyplot as plt

import matplotlib.patches as mpatch

from matplotlib.patches import Arc, Circle, Wedge

from matplotlib.collections import PatchCollection

然后設置3個變量,這3個變量的用途到后面會有解釋:

length = 20

R = 3**0.5*length/(3**0.5*cos(pi/12)-sin(pi/12))

r = 2*sin(pi/12)*R/3**0.5

接下來我們要畫12條弧線,這12條弧線是月餅邊緣的花紋:

arc1 = Arc([0, length], width=2*r, height=2*r, angle=0, theta1=30, theta2=150, ec='orange', linewidth=4)

arc2 = Arc([-length/2, length/2*3**0.5], width=2*r, height=2*r, angle=0, theta1=60, theta2=180, ec='orange', linewidth=4)

arc3 = Arc([-length/2*3**0.5, length/2], width=2*r, height=2*r, angle=0, theta1=90, theta2=210, ec='orange', linewidth=4)

arc4 = Arc([-length, 0], width=2*r, height=2*r, angle=0, theta1=120, theta2=240, ec='orange', linewidth=4)

arc5 = Arc([-length/2*3**0.5, -length/2], width=2*r, height=2*r, angle=0, theta1=150, theta2=270, ec='orange', linewidth=4)

arc6 = Arc([-length/2, -length/2*3**0.5], width=2*r, height=2*r, angle=0, theta1=180, theta2=300, ec='orange', linewidth=4)

arc7 = Arc([0, -length], width=2*r, height=2*r, angle=0, theta1=210, theta2=330, ec='orange', linewidth=4)

arc8 = Arc([length/2, -length/2*3**0.5], width=2*r, height=2*r, angle=0, theta1=240, theta2=360, ec='orange', linewidth=4)

arc9 = Arc([length/2*3**0.5, -length/2], width=2*r, height=2*r, angle=0, theta1=270, theta2=390, ec='orange', linewidth=4)

arc10 = Arc([length, 0], width=2*r, height=2*r, angle=0, theta1=300, theta2=420, ec='orange', linewidth=4)

arc11 = Arc([length/2*3**0.5, length/2], width=2*r, height=2*r, angle=0, theta1=330, theta2=450, ec='orange', linewidth=4)

arc12 = Arc([length/2, length/2*3**0.5], width=2*r, height=2*r, angle=0, theta1=0, theta2=120, ec='orange', linewidth=4)

看到這里估計很多人懵逼了,代碼是不是有點多了?實際上這些弧線都是來自于同一個Arc類,它們的用法都是一樣的,只不過部分參數不同,所以我們只要掌握一個,其他的全都會了。這里筆者就用arc1來說明一下:

arc1 = Arc([0, length], width=2*r, height=2*r, angle=0, theta1=30, theta2=150, ec='orange', linewidth=4)

其中 [0, length]是這個Arc弧線的圓心,因為這個Arc類是一個橢圓形的一部分,所以其包含圓心、橫軸、縱軸等參數,length變量就是arc1圓心的縱坐標,width=2*r和 height=2*r就說明這個橢圓的縱軸和橫軸長度相等,其是一個圓,而不是橢圓,變量r就是這個圓的半徑。angle=0就是我們不需要對這個圓進行旋轉,theta1=30和 theta2=150是指明這個弧線的起始角度和終止角度,這里的角度分別是30度和150度。而 ec='orange'和linewidth=4分別指邊線的顏色和線條寬度,顏色我們設為橙色,寬度為4。而這些弧線的效果圖如圖2所示,在圖中筆者標出了arc1、arc5和arc9這3條弧線的位置,所有弧線按照逆時針方向排列。這些位置大同小異,大家只要計算好其各自的位置參數就行,這里就不再贅述了。圖2. 弧線效果圖

然后我們再畫一個圓,這個圓是月餅的主體部分,其圓心和整個月餅的中心是重合的,圓心位置我們選在了坐標原點,代碼如下:

circle = Circle((0,0), R, ec='orange', fc='white', linewidth=4)

這里變量R就是這個大圓的半徑,邊線顏色設置為橙色,表面顏色設為白色。其效果如圖3所示。圖3. 大圓效果圖

接下來我們再畫上一些花紋,這些花紋主要由8個扇形組成,其中有4個大的扇形和4個小的扇形,代碼如下:

wedge1 = Wedge([-2, 2], R-5, 90, 180, ec='orange', fc=r'white', linewidth=4)

wedge2 = Wedge([-5, 5], R-12, 90, 180, ec='orange', fc=r'white', linewidth=4)

wedge3 = Wedge([-2, -2], R-5, 180, 270, ec='orange', fc=r'white', linewidth=4)

wedge4 = Wedge([-5, -5], R-12, 180, 270, ec='orange', fc=r'white', linewidth=4)

wedge5 = Wedge([2, -2], R-5, 270, 360, ec='orange', fc=r'white', linewidth=4)

wedge6 = Wedge([5, -5], R-12, 270, 360, ec='orange', fc=r'white', linewidth=4)

wedge7 = Wedge([2, 2], R-5, 0, 90, ec='orange', fc=r'white', linewidth=4)

wedge8 = Wedge([5, 5], R-12, 0, 90, ec='orange', fc=r'white', linewidth=4)

這里wedge1、wedge3、wedge5、wedge7是大扇形,wedge2、wedge4、wedge6、wedge8是小扇形,一個大扇形嵌套一個小扇形,其中wedge1嵌套wedge2,wedge3嵌套wedge4,以此類推。Wedge這個類和前面Arc有些類似,不過Wedge是圓的一部分,以wedge1為例:

wedge1 = Wedge([-2, 2], R-5, 90, 180, ec='orange', fc=r'white', linewidth=4)

其中[-2, 2]是這個Wedge所代表的圓的圓心,R-5是其半徑,90和180分別代表起始和終止角度,ec、fc和linewidth這些都和前面Arc類的用法相似,這8個扇形的效果圖如圖4所示。在圖中筆者標出了wedge1、wedge2、wedge5和wedge6的位置,所有扇形按照逆時針方向放置。圖4. 扇形效果圖

最后我們再把公眾號“CROSSIN”的名稱加上,因為代碼不多,所以把剩余所有代碼都寫在這里:

art_list = [arc1, arc2, arc3, arc4, arc5, arc6, arc7, arc8, arc9, arc10, arc11, arc12]

art_list.extend([circle, wedge1, wedge2, wedge3, wedge4, wedge5, wedge6, wedge7, wedge8])

fig, ax = plt.subplots(figsize=(8,8))

ax.set_aspect('equal')

for a in art_list:

ax.add_patch(a)

plt.text(-18, -2.5, 'CROSSIN', fontfamily=r'Times New Man', bbox=dict(boxstyle='square', fc="w", ec='orange', linewidth=4), fontsize=50, color='orange')

plt.ylim([-35, 35])

plt.xlim([-35, 35])

plt.show()

art_list是我們設置的一個list變量,里面放有arc1到arc12這12個圖形,然后再把circle以及8個扇形都加進去。ax.set_aspect('equal')是設置整個圖形x軸和y軸同比例,for a in art_list: ax.add_patch(a)是把art_list中所有圖形加入到畫布當中。而plt.text這行代碼中,-18和-2.5是這個text的左下角的坐標,fontfamily和 fontsize分別是文字的字體和大小,bbox是設置text邊框的格式,這些參數也都和前面講過的很多參數差不多,這里不再贅述。plt.ylim和plt.xlim是設置整個畫布的坐標范圍。最終效果如圖1所示。

當然我們也可以改變圖片的顏色,比如設置成藍色的,如圖5所示,這個完全可以根據個人愛好而定。圖5. 藍色月餅圖

筆者在這里用了不到50行代碼就畫出了一個月餅,其中還有不少復用的,所以核心只有幾個繪圖函數,理解起來并不難。你也可以自己動手試一試,定制一塊你自己的月餅。

最后再次祝大家,中秋快樂!國慶快樂!

----

獲取更多教程和案例,

歡迎搜索及關注:Crossin的編程教室

這里還有更多精彩。一起學,走得遠!

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的python制作中秋贺卡_中秋节到了,送你一个Python做的Crossin牌“月饼”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。