一年一度的七夕就要到來了,身邊的人總是問我:送什么?二哥這么窮,這么不懂得浪漫的人送點什么呢!冥思苦想之后作為程式猿的我們總是要搞出來一點屬于我們自己的浪漫,今天二哥就帶著大家用Python“碼”上七夕,
PS:七夕當然是要送一個專屬的禮物,本文的所有成果都可以定義,建議收藏!
??靜態照片二維碼
首先來一個簡單點的靜態照片二維碼制作,用著她/他/它的照片,設定好你想說的話,生成照片就可以了,
這里我們可以配置多種引數來調整二維碼的規格,下同,
- words:二維碼內容,鏈接或者句子(暫不支持中文)
- veision:二維碼大小,范圍為[1,40]
- level:二維碼糾錯級別,范圍為{L,M,Q,H},H為最高級,默認,
- picture:自定義二維碼背景圖,支持格式為 .jpg,.png,.bmp,.gif,默認為黑白色
- colorized:二維碼背景顏色,默認為 False,即黑白色
- contrast:對比度,值越高對比度越高,默認為 1.0
- brightness:亮度,值越高亮度越高,默認為 1.0,正常和對比度相同
- save_name:二維碼名稱,默認為 qrcode.png
- save_dir:二維碼路徑,默認為程式作業路徑
from MyQR import myqr
myqr.run(words="Welcome to Here!",
version=6,
picture="lye.jpg",
colorized=True,
save_name="lye.png",
)
# 如果想要更換存盤路徑,可以使用save_dir=""引數,
結果展示如下:

怎么樣,一個浪漫的二維碼是不是能夠幫你捕獲她的芳心呢,不能的話咱們繼續往下走~
🌟動態照片二維碼
有了靜態的二維碼生成,肯定也少不了生成動態的二維碼,生成動態二維碼需要我們使用一個gif圖片嵌入到二維碼內部,這里二哥推薦大家使用一些視頻片段或者是照片合集做成gif來使用,生成動態二維碼的方式和上面靜態二維碼的方式相同,直接上代碼:
from MyQR import myqr
myqr.run(
words="I Love You",
version=6,
picture="linyuner.gif",
colorized=True,
save_name="lyeqr.gif",
)
結果展示如下(圖沒選好,微微的模糊了):

什么?她還覺得不滿意?那咱們再來一個!
🌹字符詞云圖
做完了二維碼,可能表白的力度還不夠大, 怎么辦呢?下面二哥再帶大家做一個字符詞云圖,讓大家能夠把情話當背景用她/他/它的名字去進行填充,
實作字符詞云圖的整體思路如下:
- 根據輸入的字符,作成白底黑字的圖片保存(一定不要用透明的背景,會造成繪制詞云出錯)
- 讀取上一步做好的圖片,繪制詞云圖即可,
在詞云的代碼快中給出了各種能夠對詞云圖的效果進行調整的注釋,大家根據注釋直接進行相應的調整即可,接下來直接上代碼:
from wordcloud import WordCloud
import wordcloud
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont
# 解決讀取圖片報錯
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
import os
# 獲取背景文字
def gen_text_img(text, font_size, font_path=None):
'''
輸入:
text:照片墻的樣式文字
font_size:字體的大小
font_path:字體
回傳:
文字影像
'''
font = ImageFont.truetype(font_path, font_size)
(width, length) = font.getsize(text)
text_img = Image.new('RGB', (width + 100, length+100), color='white')
draw = ImageDraw.Draw(text_img)
# 從左上角開始繪制,每次調整位置用于加粗字體
for i in range(100):
draw.text((i, i), text, fill=(0, 0, 0), font=font)
text_img.save('background.png')
return text_img
def word_cloud(img, word, font_path=None):
wc_mask = np.array(Image.open('background.png'))
wc = wordcloud.WordCloud(
# 設定字體格式
font_path=font_path,
# 設定背景圖
mask=wc_mask,
# 最多顯示詞數
max_words=200,
# 字體最大值
max_font_size=320,
# 整體背景色
background_color='White',
# 詞云的邊框大小
contour_width=2,
# 詞云的邊框顏色
contour_color='pink',
# 設定字體重復
repeat=True,
color_func=lambda *args,
**kwargs: "pink")
# 從字典生成詞云
wc.generate(word)
# 從背景圖建立顏色方案
image_colors = wordcloud.ImageColorGenerator(wc_mask)
# 顯示詞云
plt.figure(figsize=[10, 10], dpi=300)
plt.imshow(wc)
plt.axis('off')
plt.show()
def main(font_path='buzz_cloud_font.ttf',
font_size=2000,
):
word = input('請輸入填充詞:')
text = input('請輸入背景詞:')
img = gen_text_img(text,font_size, font_path)
word_cloud(img,word,font_path)
main()
結果展示如下(自戀一波):

這里偷偷的自己給自己做個圖,友情提醒一下各位小伙伴們,不要打成別人的名字,還有每個字記得打正確了,不然又是少不了的家庭矛盾(別問我怎么知道的),
💎滿屏愛心表白
接下來我們還可以繪制一個滿屏愛心的表白效果來炫一下,
該效果主要使用海龜做圖的方法來繪制,首先定義好繪制普通愛心的代碼,為了好看一些我們用隨機的方式進行繪制,隨機心出現的地址,隨機顏色,隨機大小,如過你想要更改隨機的范圍在代碼中自行調整即可,具體細節在于角度的把控,這里不再做過多贅述,直接上代碼,
import random
import turtle
from turtle import mainloop, hideturtle
# 畫心
def draw_heart(size, color_):
turtle.speed(0)
turtle.colormode(255)
turtle.color(color_)
turtle.pensize(2)
turtle.pendown()
turtle.setheading(150)
turtle.begin_fill()
turtle.fd(size)
turtle.circle(size * -3.745, 45)
turtle.circle(size * -1.431, 165)
turtle.left(120)
turtle.circle(size * -1.431, 165)
turtle.circle(size * -3.745, 45)
turtle.fd(size)
turtle.end_fill()
# 隨機顏色,大小,位置
def draw():
# 隨機顏色
colors1 = random.randint(0, 255)
colors2 = random.randint(0, 255)
colors3 = random.randint(0, 255)
turtle.penup()
# 隨機位置
x = random.randint(-400, 400)
y = random.randint(-200, 200)
turtle.goto(x, y)
# 隨機大小
size = random.randint(10, 20)
draw_heart(size, (colors1, colors2, colors3))
# 主函式
def main():
hideturtle()
turtle.setup(900, 500)
# 更改心出現的個數
for i in range(30):
draw()
turtle.penup()
turtle.goto(-200, 0)
turtle.color('Black')
turtle.write('給二哥點個贊吧!', font=('宋體', 60, 'normal'))
mainloop()
main()
效果如下:

這樣一副滿屏愛心的圖看起來是不是還說得過去,這里又把自己掛上去了,希望大家點個贊吧~如果力度還不夠,那就只能再畫一個搞怪一點的圖了,
🔥BiuBiuBiu~
最后,我們可以來一個搞怪的小人和愛心,小人要做出類似于龜派氣功的造型,那種酷炫的動漫人物畫起來太難,今天咱們先畫一個簡版的使用一下,小人的龜派氣功中打出的是類似于我們上面畫的那種小心心就可以了,直接看代碼吧~
import turtle
import time
from turtle import mainloop, hideturtle
def clear_all():
turtle.penup()
turtle.goto(0, 0)
turtle.color('white')
turtle.pensize(800)
turtle.pendown()
turtle.setheading(0)
turtle.fd(300)
turtle.bk(600)
# 重定位海龜的位置
def go_to(x, y, state):
turtle.pendown() if state else turtle.penup()
turtle.goto(x, y)
def draw_heart(size):
turtle.color('red', 'pink')
turtle.pensize(2)
turtle.pendown()
turtle.setheading(150)
turtle.begin_fill()
turtle.fd(size)
turtle.circle(size * -3.745, 45)
turtle.circle(size * -1.431, 165)
turtle.left(120)
turtle.circle(size * -1.431, 165)
turtle.circle(size * -3.745, 45)
turtle.fd(size)
turtle.end_fill()
# 畫出發射愛心的小人
def draw_people(x, y):
turtle.penup()
turtle.goto(x, y)
turtle.pendown()
turtle.pensize(2)
turtle.color('black')
turtle.setheading(0)
turtle.circle(60, 360)
turtle.penup()
turtle.setheading(90)
turtle.fd(75)
turtle.setheading(180)
turtle.fd(20)
turtle.pensize(4)
turtle.pendown()
turtle.circle(2, 360)
turtle.setheading(0)
turtle.penup()
turtle.fd(40)
turtle.pensize(4)
turtle.pendown()
turtle.circle(-2, 360)
turtle.penup()
turtle.goto(x, y)
turtle.setheading(-90)
turtle.pendown()
turtle.fd(20)
turtle.setheading(0)
turtle.fd(35)
turtle.setheading(60)
turtle.fd(10)
turtle.penup()
turtle.goto(x, y)
turtle.setheading(-90)
turtle.pendown()
turtle.fd(40)
turtle.setheading(0)
turtle.fd(35)
turtle.setheading(-60)
turtle.fd(10)
turtle.penup()
turtle.goto(x, y)
turtle.setheading(-90)
turtle.pendown()
turtle.fd(60)
turtle.setheading(-135)
turtle.fd(60)
turtle.bk(60)
turtle.setheading(-45)
turtle.fd(30)
turtle.setheading(-135)
turtle.fd(35)
turtle.penup()
# 繪制文字
def draw_text(text, t_color, font_size, show_time):
turtle.penup()
turtle.goto(-350, 0)
turtle.color(t_color)
turtle.write(text, font=('宋體', font_size, 'normal'))
time.sleep(show_time)
clear_all()
# 愛心發射
def draw_():
turtle.speed(0)
draw_people(-250, 20)
turtle.penup()
turtle.goto(-150, -30)
draw_heart(14)
turtle.penup()
turtle.goto(-200, -200)
turtle.color('pink')
turtle.write('Biu~', font=('宋體', 60, 'normal'))
turtle.penup()
turtle.goto(-20, -60)
draw_heart(25)
turtle.penup()
turtle.goto(-70, -200)
turtle.color('pink')
turtle.write('Biu~', font=('宋體', 60, 'normal'))
turtle.penup()
turtle.goto(200, -100)
draw_heart(45)
turtle.penup()
turtle.goto(150, -200)
turtle.color('pink')
turtle.write('Biu~', font=('宋體', 60, 'normal'))
turtle.hideturtle()
time.sleep(3)
def main():
# 隱藏海龜
hideturtle()
turtle.setup(900, 500)
draw_text("準備好了嗎?", "black", 60, 0)
draw_text("接下來", "skyblue", 60, 0)
draw_text("馬上七夕,碼上七夕", "pink", 60, 3)
draw_()
# 使用mainloop防止視窗卡死
mainloop()
main()
結果展示如下:

怎么樣,趕緊行動起來吧,帶著她的名字,她的照片,來一場屬于程式猿的浪漫吧~
好了~到這里本期的“碼”上七夕就到這里了,
走過,路過,不要錯過!記得三連呦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/293463.html
標籤:python
