PngImageFile 类型的对象 JSON 不可序列化
Object of type PngImageFile is not JSON serializable
我正在尝试叠加图像。我正在使用卫星数据研究阿根廷上空的现象,但我真的很想通过 folium 使用交互式地图。到目前为止,在创建图像时,我得到了一个输出。但是,当我尝试将卫星图像叠加到底图上时,我收到一条错误消息:
Object of type PngImageFile is not JSON serializable
我不知道如何修复它。
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
根据 folium.raster_layers.ImageOverlay
的文档,image
参数必须是“字符串、文件或类似数组的对象”:
image (string, file or array-like object) – The data you want to draw
on the map. * If string, it will be written directly in the output
file. * If file, it’s content will be converted as embedded in the
output file. * If array-like, it will be converted to PNG base64
string and embedded in the output.
在您的代码中,您通过了 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 数组到 ImageOverlay
:
img = Image.open("GS.png")
folium.raster_layers.ImageOverlay(
numpy.array(img),
[[ya.min(), xa.min()], [ya.max(), xa.max()]],
opacity=0.5).add_to(mapa)
我正在尝试叠加图像。我正在使用卫星数据研究阿根廷上空的现象,但我真的很想通过 folium 使用交互式地图。到目前为止,在创建图像时,我得到了一个输出。但是,当我尝试将卫星图像叠加到底图上时,我收到一条错误消息:
Object of type PngImageFile is not JSON serializable
我不知道如何修复它。
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
根据 folium.raster_layers.ImageOverlay
的文档,image
参数必须是“字符串、文件或类似数组的对象”:
image (string, file or array-like object) – The data you want to draw on the map. * If string, it will be written directly in the output file. * If file, it’s content will be converted as embedded in the output file. * If array-like, it will be converted to PNG base64 string and embedded in the output.
在您的代码中,您通过了 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 数组到 ImageOverlay
:
img = Image.open("GS.png")
folium.raster_layers.ImageOverlay(
numpy.array(img),
[[ya.min(), xa.min()], [ya.max(), xa.max()]],
opacity=0.5).add_to(mapa)