Python 无法在Kivy中查看tiff图像
问题Python 无法在Kivy中查看tiff图像,python,python-3.x,kivy,tiff,Python,Python 3.x,Kivy,Tiff,问题 我可以用kivy中的Image()模块加载图片。但由于某些原因,我无法将.tif文件加载到kivy中。当图像源为“”..\pics\lugia.png“”时,图像加载非常好。但是如果源代码是“”..\pics\snorax.tif”,我只会得到那个白色框和错误: [WARNING] [Image ] Unable to load image <C:\Users\path\pics\snorlax.tif> [ERROR ] [Image ] Error
我可以用kivy中的
Image()
模块加载图片。但由于某些原因,我无法将.tif文件加载到kivy中。当图像源为“”..\pics\lugia.png“
”时,图像加载非常好。但是如果源代码是“”..\pics\snorax.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()
- 图片来自(任天堂等的财产)
- 所有图像均为64 x 64。我只是将其中一些导出为TIFF格式。所以图像大小不应该是问题
- 我使用的是Kivy版本1.11.0rc1
- 根据Anaconda的说法,虚拟环境正在运行Python 3.5.6
- 我正在Windows 7上通过PyCharm运行此程序
- 我有sdl2_映像版本2.0.2构建0。根据sdl2_图像页面,sdl2_图像从1.2.5版起就支持tiff
- 我有libtiff版本4.0.9
- 将文件扩展名从“.tif”更改为“.tiff”
是我做错了什么,还是Kivy只是不支持TIFF格式?您需要创建一个正确的安装
我使用anaconda来安装kivy,但我没有完全正确地安装依赖项。所以我必须创建一个新的虚拟python安装 注: 这适用于python版本3.5或更高版本。 此外,我还将让您明确说明python安装将创建什么样的环境。据我所知,没有理由这么做 窗口
启动windows命令提示符。
C:\Users\H>
python
导入系统、操作系统
os.path.dirname(sys.executable)
C:\Users\H\AppData\Local\Programs\Python\Python36
因此,我的python安装在 C:\Users\H\AppData\Local\Programs\Python\Python36\Python
我在我的主目录中创建了一个名为“venvs”的文件夹。
C:\Users\H\venvs
启动windows命令提示符。
如果您执行了步骤1
C:\Users\H>
C:\Users\H\AppData\Local\Programs\Python\Python36\Python-m venv C:\Users\H\venvs\env1
如果您没有执行步骤1
C:\Users\H>
python-m venv C:\Users\H\venvs\env1
C:\Users\H>
C:\Users\H\venvs\env1\Scripts\activate
(env1)C:\Users\H>
python-mpipinstall docutils pygments pypiwin32 kivy_deps.sdl2==0.1.22 kivy_deps.glew==0.1.12
(env1)C:\Users\H>
python-m pip install kivy==1.11.1
如果您正在使用PyCharm,请转到文件>设置
从“设置”菜单“项目>项目解释器”
单击档位>添加
在添加Python解释器菜单中,选择“现有环境”,然后将解释器设置为新虚拟环境的位置。
我的是C:\Users\H\venvs\env1\Scripts\Python.exe<点击OK。 点击设置菜单中的应用。点击OK后,脚本应该能够查看TIFF文件
可能您正在使用的任何图像加载器都不支持tiff,或者至少没有启用tiff支持。看起来sdl2_图像提供程序可以支持tiff,因此可能您没有使用tiff,或者(如上所述)它没有启用这种支持。我如何知道我使用的是什么图像加载器?它应该打印在日志中。我可以使用您的代码加载两个(tif(f))文件(在弹出一些警告消息框后),而CCITT_1工作正常。Win上的Python 3.7.3和Kivy 1.10.1(sdl(Kivy.deps.sdl2 0.1.18)以及由pip安装的所有依赖项,如Kivy网页中所示)。我注意到你使用的是rc*版本。您应该升级到官方发布的版本。另外,将路径中的斜杠加倍(
source='..\\pics\\snorax.tif'
),或者使用原始字符串(这不是根本原因,但可能会产生问题)。