【发布时间】:2019-09-21 21:52:56
【问题描述】:
问题
我可以在 kivy 中使用Image() 模块加载图片。但由于某种原因,我无法将 .tif 文件加载到 kivy 中。当图像源为'..\pics\lugia.png' 时,图像加载得非常好。但是如果来源是'..\pics\snorlax.tif',我只会得到那个白框和错误:
[WARNING] [Image ] Unable to load image <C:\Users\path\pics\snorlax.tif>
[ERROR ] [Image ] Error loading texture ..\pics\snorlax.tif
代码
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock
from kivy.uix.image import Image
class ContainerBox(BoxLayout):
def __init__(self, **kwargs):
super(ContainerBox, self).__init__(**kwargs)
self.orientation = 'vertical'
#self.picture = Image(allow_stretch=True, source='..\pics\lugia.png')
self.picture = Image(allow_stretch=True, source='..\pics\snorlax.tif')
Clock.schedule_once(lambda dt: self.add_widget(self.picture), timeout=0.1)
class SimpleImage(App):
def build(self):
return ContainerBox()
if __name__ == '__main__':
SimpleImage().run()
技术细节
- 图片来自veekun.com(任天堂等的财产)。
- 所有图像都是 64 x 64。我只是将其中一些导出为 TIFF 格式。所以图片大小应该不是问题。
- 我使用的是 Kivy 版本 1.11.0rc1
- 根据 Anaconda 的说法,虚拟环境正在运行 Python 3.5.6
- 我在 Windows 7 上通过 PyCharm 运行它
- 我有 sdl2_image 版本 2.0.2 build 0。根据 sdl2_image 页面,sdl2_image 从 1.2.5 版本开始支持 tiff。
- 我有 libtiff 4.0.9 版
- 将文件扩展名从“.tif”更改为“.tiff”
我的问题
是我做错了什么,还是 Kivy 不支持 TIFF 格式?
【问题讨论】:
-
可能您使用的任何图像加载器都不支持 tiff,或者至少没有启用 tiff 支持。
-
看起来 sdl2_image 图像提供程序可以支持 tiff,所以可能您没有使用它,或者(如上所述)它没有启用该支持。
-
如何才能知道我使用的是什么图片加载器?
-
应该打印在日志中。
-
我可以使用您的代码加载两个 (tif(f)) 文件(在弹出几个警告消息框后),而 CCITT_1 工作正常。 Python 3.7.3 和 Kivy 1.10.1 (sdl (kivy.deps.sdl2 0.1.18) 和pip 安装的所有依赖项,如 Kivy 网页中的说明)在 Win 上。我注意到您使用的是 rc* 版本。您应该升级到官方发布的版本。另外,将路径中的 bkslashes 加倍 (
source='..\\pics\\snorlax.tif'),或使用 raw 字符串(这里不是根本原因,但可能会产生问题)。
标签: python python-3.x kivy tiff