600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python 微信发送图片_Python微信公众号后台开发004:图片上传及返回

python 微信发送图片_Python微信公众号后台开发004:图片上传及返回

时间:2021-10-16 02:10:22

相关推荐

python 微信发送图片_Python微信公众号后台开发004:图片上传及返回

你绝对在朋友群看到过类似这样的图片信息:

虽然大家都知道是假的,但就是爱玩,同时也给公众号引来了大量粉丝。

对于公众号,有时我们会需要返回图片,那么今天就说说怎么成功的返回图片呢?

主要流程

获取图片

图片处理,上传

返回图片

首先我们需要获取图片的信息,通过@robot.image获取用户图片信息

# 用户发送图片

@robot.image

def blog(message,session

print(dir(message))

print(message.__dict__)

print("msg", message.img)

我们关心的是图片的下载路径:message.img

获取图片

通过图片路径下载图片:

def request_download(img_url, img_save_path):

import requests

r = requests.get(img_url)

with open(img_save_path, 'wb') as f:

f.write(r.content)

图片处理及上传

图片上传:

上传临时素材接口,获取临时图片的media_id返回图片。

通过调用官方的上传临时素材接口(我这里图片只做临时返回处理,没必要永久保存)

token值是有时效性,官方建议不要每次使用都重新获取(后面会放缓存)

def get_access_token(appid, secret):

'''获取access_token,100分钟刷新一次'''

url = 'https://api./cgi-bin/token?grant_type=client_credential&appid={}&secret={}'.format(appid, secret)

r = requests.get(url)

parse_json = json.loads(r.content.decode())

token = parse_json['access_token']

return token

def img_upload(mediaType, name):

token = get_access_token(app_id, secret)

url = "https://api./cgi-bin/media/upload?access_token=%s&type=%s" % (token, mediaType)

files = {'media': open('{}'.format(name), 'rb')}

r = requests.post(url, files=files)

parse_json = json.loads(r.content.decode())

return parse_json['media_id']

返回图片

reply = ImageReply(media_id=media_id, message=message)

return reply

这样一个完整的图片获取,下载、处理、上传、返回就完成了。

# 用户发送图片

@robot.image

def blog(message,session):

changdu = str(len(session))

print("changdu", session)

# 保证图片名称唯一

uuid = create_uuid()

img_url = message.img

img_path = "./Christmas_Hat/Image/" + uuid + ".png"

img_outPath = "./Christmas_Hat/Image/out" + uuid + ".png"

# print("msg", message.img)

# print(dir(message)) # 获取对象所有属性

# print(message.__dict__)

# print("\n"+message.MediaId)

# 下载图片

request_download(img_url, img_path)

# 图片处理

add_hat(img_path, img_outPath)

# 上传至服务器

media_id = img_upload("image", img_outPath)

# message.MediaId = media_id

# 返回信息

reply = ImageReply(media_id=media_id, message=message)

return reply

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。