如何将JSON对象转换为图像对象?

如何将JSON对象转换为图像对象?,json,image,discord.py,Json,Image,Discord.py,我曾多次尝试查找此解决方案,但都不起作用。尝试创建使用JSON存储系统的discord bot。这个机器人是用python制作的。我将展示我尝试了多种方法从JSON存储中显示图像的代码。甚至Utf-8和16编码也不起作用。所以我现在一直在尝试任何事情。就像这样-> { "id": 1, "Name": "bulbasaur", "Image": "https://i.imgur.com/MOQHxZGg.png" } JSON above Python below @comman

我曾多次尝试查找此解决方案,但都不起作用。尝试创建使用JSON存储系统的discord bot。这个机器人是用python制作的。我将展示我尝试了多种方法从JSON存储中显示图像的代码。甚至Utf-8和16编码也不起作用。所以我现在一直在尝试任何事情。就像这样->

{
  "id": 1,
  "Name": "bulbasaur",
  "Image": "https://i.imgur.com/MOQHxZGg.png"
}

JSON above

Python below
@commands.command(name='image_test')
    async def image(self, context,  arg):
        with open('image.json') as image:
            p = json.load(image)
        p['Name'] = arg
        #print(p['Name'])
        #print(p['Image'])

        #with urllib2.urlopen(p['Image']) as i:
            #data = i.read().decode('ISO-8859-1')


        embed = discord.Embed()
        embed.title = 'test image'
        embed.set_image(url=requests.get(p['Image']).url)
        await context.channel.send(embed=embed)


将JSON对象加载到python中时,其行为与字典完全相同,其值可以通过键访问:

mydict={“foo”:“bar”} >>>mydict[“foo”] 酒吧 嵌入的图像完全依赖于指向源图像的字符串中的URL。您已经将图像的URL存储在json中,因此只需使用正确的键(
“image”
)访问其嵌入的URL:

@commands.command(name='image\u test')
异步def映像(自身、上下文、参数):
以open('image.json')作为图像:
p=json.load(图像)
embed=discord.embed()
embed.title='测试图像'
embed.set_image(url=p['image'])
等待context.send(嵌入=嵌入)#编辑为使用context.send()
作为旁注,我注意到的一件事是您使用了
context.channel.send()

Context
对象继承自
abc.Messageable
,这意味着您可以直接调用
send()
corroutine向频道发送消息


参考文献:


我试过p['Image'],但没用。这是它的结果->我使用的图像有一个自定义的画布大小,这样它可以调整嵌入图像中的间距。让它工作,只需重新加载相同的图像,然后它就开始工作。很明显,这是因为imgur破坏了某些显示类型的图像数据。我没有真正研究过这一点,但是,一种显示类型根本不起作用。。。即使只是定期发布不和谐的图片,也是twitter预览图片显示类型。这是我肯定知道的。如果这给了你一个想法。比如,如果你下载预览图像,然后尝试在没有机器人或任何东西的情况下在discord上手动上传它。。。它不会显示图像。我想的是,如果一个图像的内部数据与不和谐习惯的常规图像有轻微的差异;它将把它当作一个常规文件来处理。。。因此没有显示。