Kivy中打开.png文件的问题

1 投票
2 回答
1039 浏览
提问于 2025-04-20 02:25

我在尝试使用kivy.garden.mapview,显然这个功能还在开发中,但我在想问题可能出在kivy/core/image/img_pygame.py这个文件上。

请问kivy和pygame支持.png格式的图片吗?

-B

   [DEBUG             ] [ImagePygame ] Load <cache\osm_18_131070.5_131070.0.png>
   [WARNING           ] [Image       ] Unable to load image <cache\osm_18_131070.5_131070.0.png>
   [INFO              ] [Base        ] Leaving application in progress...
 Traceback (most recent call last):
   File "C:\Users\Brendan\Documents\oldfiles\ShorePark.py", line 306, in <module>
     ShorePark().run()
   File "C:\Python34\lib\site-packages\kivy\app.py", line 792, in run
     runTouchApp()
   File "C:\Python34\lib\site-packages\kivy\base.py", line 481, in runTouchApp
     EventLoop.window.mainloop()
   File "C:\Python34\lib\site-packages\kivy\core\window\window_pygame.py", line 381, in mainloop
     self._mainloop()
   File "C:\Python34\lib\site-packages\kivy\core\window\window_pygame.py", line 287, in _mainloop
     EventLoop.idle()
   File "C:\Python34\lib\site-packages\kivy\base.py", line 321, in idle
     Clock.tick()
   File "C:\Python34\lib\site-packages\kivy\clock.py", line 422, in tick
     self._process_events()
   File "C:\Python34\lib\site-packages\kivy\clock.py", line 537, in _process_events
     if event.tick(self._last_tick) is False:
   File "C:\Python34\lib\site-packages\kivy\clock.py", line 309, in tick
     ret = callback(self._dt)
   File "C:\Python34\lib\site-packages\gardenMapView\mapview\downloader.py", line 79, in _check_executor
     callback(*args)
   File "C:\Python34\lib\site-packages\gardenMapView\mapview\view.py", line 83, in set_source
     self.source = cache_fn
   File "instructions.pyx", line 337, in kivy.graphics.instructions.VertexInstruction.source.__set__ (kivy\graphics\instructions.c:6497)
   File "context_instructions.pyx", line 360, in kivy.graphics.context_instructions.BindTexture.source.__set__ (kivy\graphics\context_instructions.c:7150)
   File "C:\Python34\lib\site-packages\kivy\core\image\__init__.py", line 442, in __init__
     self.filename = arg
   File "C:\Python34\lib\site-packages\kivy\core\image\__init__.py", line 631, in _set_filename
     mipmap=self._mipmap, nocache=self._nocache)
   File "C:\Python34\lib\site-packages\kivy\core\image\__init__.py", line 371, in load
     im = loader(filename, **kwargs)
   File "C:\Python34\lib\site-packages\kivy\core\image\__init__.py", line 150, in __init__
     self._data = self.load(filename)
   File "C:\Python34\lib\site-packages\kivy\core\image\img_pygame.py", line 42, in load
     im = pygame.image.load(filename)
 pygame.error: Unsupported image format

补充:

我用了自己的Python版本,最后终于搞定了。

看起来问题出在mscv编译器在找vcvarsamd64.bat这个文件,但这个文件不存在。

我用了以下解决方案:在构建/安装Python 2.7的C模块时出现错误

然后我把所有的glew头文件和库文件复制到了合适的包含文件夹里,最后我成功用pip install kivy安装了kivy。

2 个回答

0

我发现我试图把 矢量 mbtiles 加载到 Mapview 中,但它不支持这种格式。它支持的是 栅格 mbtiles,比如这个链接中的文件:https://github.com/klokantech/vector-tiles-sample/releases/download/v1.0/countries-raster.mbtiles

0

png格式应该是可以正常支持的,我不太确定具体是什么问题。可能是pygame这个工具不支持png格式,或者你没有更好的工具来处理它,但这听起来不太可能。

你能运行一下mapview自带的示例吗?比如在它的github仓库的示例文件夹里有个叫simple_map.py的文件。

撰写回答