这是以前早做的一个小程序,原理是获取金山每日一语的图片和文字,并对图片进行剪辑,添加水印,实现个性化,使用了wxpy、PIL实现功能
主程序源码如下:
import requestsimport jsonimport osfrom wxpy import *from PIL import Imagefrom PIL import ImageDrawfrom PIL import ImageFontdef 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('@img@my_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的学习-践行-总结
喜欢研究和分享技术瓶颈,欢迎关注
独学而无友,则孤陋而寡闻!