PngImageFile类型的对象不可JSON序列化

时间:2019-04-22 23:36:35

标签: python-3.x folium

我正在尝试进行图像叠加。我正在使用卫星数据研究阿根廷上空的现象,但我真的很想通过叶片使用交互式地图。到目前为止,创建图像时,我得到了输出。但是,当我尝试将卫星图像叠加到底图上时,出现一条错误消息:

  

PngImageFile类型的对象不可JSON序列化

我不知道如何解决它。

from PIL import Image

fig.savefig('GS.png', transparent=True)

img = Image.open("GS.png")


import folium
from folium import plugins


m = folium.Map(location=[-31.416016, -64.188929],  tiles = 'Stamen Terrain')

folium.raster_layers.ImageOverlay(img,
                     [[ya.min(), xa.min()], [ya.max(), xa.max()]],
                     opacity=0.5).add_to(mapa)

mapa

1 个答案:

答案 0 :(得分:0)

根据folium.raster_layers.ImageOverlay的文档,image参数必须是“ 字符串,文件或类似数组的对象”:

  

图像字符串,文件或类似数组的对象)–您要绘制的数据   在地图上。 *如果是字符串,它将直接写在输出中   文件。 *如果是文件,其内容将被转换为嵌入到   输出文件。 *如果类似数组,它将被转换为PNG base64   字符串并嵌入到输出中。

在您的代码中,您传递了一个PIL Image

img = Image.open("GS.png")

,并且Image不可JSON序列化。

尝试将路径传递到图像文件:

import os
img = os.path.abspath("GS.png")

folium.raster_layers.ImageOverlay(
                     img,
                     [[ya.min(), xa.min()], [ya.max(), xa.max()]],
                     opacity=0.5).add_to(mapa)

或者,如果您确实需要PIL Image,并且由于您已经有了numpy(因为它是对folium的依赖),您还可以在将Image转换为numpy数组之前,将其传递给{ {1}}:

ImageOverlay