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安装将创建什么样的环境。据我所知,没有理由这么做

窗口

  • (可选)查找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
  • 创建新的虚拟环境。我将我的名字命名为“env1”。
    启动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

  • 安装kivy
    (env1)C:\Users\H>
    python-m pip install kivy==1.11.1

  • PyCharm
    如果您正在使用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'
    ),或者使用原始字符串(这不是根本原因,但可能会产生问题)。