这是以前早做的一个小程序,原理是获取金山每日一语的图片和文字,并对图片进行剪辑,添加水印,实现个性化,使用了wxpy、PIL实现功能
主程序源码如下:
import requests
import json
import os
from wxpy import *
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
def jinshan_picture():
url = 'http://open.iciba.com/dsapi'
api = requests.get(url)
api = json.loads(api.text)
picture_url = api['fenxiang_img']
mp3url = api['tts']
text = api['note']
mp3data = requests.get(mp3url)
picture_data = requests.get(picture_url)
with open('./data/yinping.mp3', 'wb') as f:
f.write(mp3data.content)
with open('./data/image.jpg', 'wb') as f:
f.write(picture_data.content)
background = Image.open('./data/image.jpg')
prospect = Image.open('./static/imagebj.png')
background.paste(prospect, (0, 757)) # 设置前景图覆盖的位置
background.save('./data/fasong.jpg')
background.close()
os.remove('./data/image.jpg')
# 开始图片处理----添加文字处理
font = ImageFont.truetype("./STXINGKA.TTF", 26) # 设置所使用的字体
image_file = "./data/fasong.jpg"
im1 = Image.open(image_file)
draw = ImageDraw.Draw(im1) # 画图
if len(text) <= 18:
draw.text((100, 800), text, '#050505', font=font) # 设置文字位置/内容/颜色/字体
elif 18 < len(text) <= 36:
draw.text((100, 800), text[0:18], '#050505', font=font)
draw.text((150+(440-len(text[18:])*25), 850), text[18:], '#050505', font=font)
else:
draw.text((100, 800), '我爱你,你的等待并非一文不值!', '#050505', font=font)
im1.save("./data/fenxiang.jpg")
os.remove('./data/fasong.jpg')
def wx():
bot = Bot()
my_friend = bot.friends().search('RPA ')[0]
my_friend.send_image('data/fenxiang.jpg') # 发送图片
# my_friend.send_file('data/yinping.mp3') # 发送文件
# 发送文本
# my_friend.send('Hello, WeChat!')
# 发送视频
# my_friend.send_video('my_video.mov')
# 以动态的方式发送图片
# my_friend.send('@[email protected]_picture.png')
if __name__ == '__main__':
jinshan_picture()
图片效果如下:
图中红色边框是用白色的前景图片遮盖了的效果,也可以换成其他图片,然后填上了一句话。
这段程序的作用是下载金山的音频和图片素材保存,以便于后面使用。
url = 'http://open.iciba.com/dsapi'
api = requests.get(url)
api = json.loads(api.text)
picture_url = api['fenxiang_img']
mp3url = api['tts']
text = api['note']
mp3data = requests.get(mp3url)
picture_data = requests.get(picture_url)
with open('./data/yinping.mp3', 'wb') as f:
f.write(mp3data.content)
with open('./data/image.jpg', 'wb') as f:
f.write(picture_data.content)
这段的作用是对图片处理,主要实现两张图片的融合
background = Image.open('./data/image.jpg')
prospect = Image.open('./static/imagebj.png')
background.paste(prospect, (0, 757)) # 设置前景图覆盖的位置
background.save('./data/fasong.jpg')
background.close()
os.remove('./data/image.jpg')
这段的作用是设置添加水印的文字内容,并根据文字对的长度进行简单的换行排版。
# 开始图片处理----添加文字处理
font = ImageFont.truetype("./STXINGKA.TTF", 26) # 设置所使用的字体
image_file = "./data/fasong.jpg"
im1 = Image.open(image_file)
draw = ImageDraw.Draw(im1) # 画图
if len(text) <= 3:
draw.text((100, 800), text, '#050505', font=font) # 设置文字位置/内容/颜色/字体
elif 18 < len(text) <= 5:
draw.text((100, 800), text[0:18], '#050505', font=font)
draw.text((150+(440-len(text[18:])*25), 850), text[18:], '#050505', font=font)
else:
draw.text((100, 800), '我爱你,你的等待并非一文不值!', '#050505', font=font)
im1.save("./data/fenxiang.jpg")
os.remove('./data/fasong.jpg')
也可以在图片右下角加上每个好友的名字,然后再发送,这样的话显得更加个性化和与众不同。
这个是微信登陆并搜索好友,然后发送图片,在这里修改成你要发送的好友昵称即可
def wx():
bot = Bot()
my_friend = bot.friends().search('RPA ')[0]
my_friend.send_image('data/fenxiang.jpg') # 发送图片
测试程序如下,先下载再发送
if __name__ == '__main__':
jinshan_picture()
wx()
其实关于图片的处理不用保存到本地,可以直接保存到内存中,但是考虑到对图片的多次使用,所以暂时保存了本地,保存在内存中用下面方法
from io import BytesIO
这是无聊的时候弄来玩玩,收到这个小程序的启发,再后来想到了一种利用微信做实时日志系统,原理是基于挂载在云端的微信,利用MQ消息处理,程序调用消息生产者,微信作为消息消费者,打造一个通用的微信日志系统,实现多程序的警报,日后有空再分享这个。
完整源码及其静态文件点击原文阅读访问github下载
ID:Python之战
|作|者|公(zhong)号:python之战
专注Python,专注于网络爬虫、RPA的学习-践行-总结
喜欢研究和分享技术瓶颈,欢迎关注
独学而无友,则孤陋而寡闻!