SMTP 是python当中邮件发送的协议 内置支持的功能库 发送文本或者附件
python当中模块 smtplib、email 两个模块,email负责构造邮件 stmp负责发送
import smtplib
# 构造邮件
from email.mime.text import MIMEText
import time
def send_message():
# 1.定义邮箱服务 用户 密码或授权码 接收人
mail_server = "smtp.qq.com"
mail_user = "[email protected]"
mail_password = "lfxtxtfpytheljcafdh"# 去名
to = "[email protected]"
# 2.进行邮件消息定义 邮件格式转换
message="你好啊,中午吃点啥?"
message = MIMEText(message)
# 3. 指定主题(标题) 发件人的设定
message['subject'] = '小傻瓜'
message['From'] = mail_user
# 4.创建发送对象,端口号记住就行了
mail = smtplib.SMTP(mail_server, 25)
mail.set_debuglevel(1)
# 5.登录
mail.login(mail_user, mail_password)
# 6.发送邮件
mail.sendmail(mail_user, to, message.as_string())
# 7.断开服务
mail.quit()
print("邮件发送成功!")
# 可以多次发送
for i in range(5):
send_message()
time.sleep(10)
工具:image
思路:
1.通过image打开图片
2.分析每一个像素点
3.颜色转换,默认是RGB,转成黑白灰转换
4.不同灰度对应不同字符映射
5.本地存储
import Image
def getchar(r,g,b):
# 转成灰度
gray = r*0.2126 + g*0.7152 + b*0.0722
# 设定指定字符 从左到有逐渐变浅
txt = list("@MNA&mno,. ")
# 256匹配到相应数量个数
n = 256/len(txt)
# 找到匹配下标
index = int(gray/n)
return txt[index]
if __name__ == '__main__':
im = Image.open("./img/demo.jpg")
# 降低图片大小
WIDTH = 180
HEIGHT =280
im = im.resize((WIDTH, HEIGHT), Image.NEAREST)
txt = ''
for j in range(HEIGHT):
for i in range(WIDTH):
pix = im.getpixel((i, j))
txt += getchar(*pix)
txt += '\n'
with open("./result_txt/wang2.txt", 'w') as ff:
ff.write(txt)
im.show()
print('完毕')
思路:
动画(一帧一帧的画面连起来)
把得到的视频进行拆分,拆分成一帧一帧的画面,然后进行一帧一帧的修改
转换成对应的字符画,然后再进行一帧一帧的刷新显示。
工具:
cv2模块,opencv,
opencv-cont
# 需安装包opencv-contrib-python
import cv2
import os
def getchar(num):
# 设定指定字符 从左到有逐渐变浅
txt = list("@MNA&mno,. ")
n = 256/len(txt)
index = int(num/n)
return txt[index]
if __name__ == '__main__':
# 文件读取cv2,VideoCapture()可以读取文件.
# 1.如果参数为0,打开摄像头;
# 2.如果为路径,则打开相应视频
cv = cv2.VideoCapture('./video/laohuyuan.mp4')
WIDTH = 55 # 宽
HEIGHT = 30 # 高
sum=0
data_list=[]
if cv.isOpened():
# boo代表当前是否读到数据 im代表当前图像画面
boo, im = cv.read()
else:
boo = False
while boo:
sum += 1
txt = ""
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
gray = cv2.resize(gray, (WIDTH,HEIGHT))
for y in gray:
for x in y:
# getchar(x)
txt += getchar(x)
txt +="\n"
data_list.append(txt)
boo, im = cv.read()
if sum % 100 == 0:
print("当前打印第%d帧"%sum)
# 开始展示动画
for item in data_list:
os.system('cls')
print(item)
print("\n\n")