【问题标题】:Cannot view tiff images in Kivy无法在 Kivy 中查看 tiff 图像
【发布时间】: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.3Kivy 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


【解决方案1】:

您需要创建一个正确的安装
我使用 anaconda 来安装 kivy,但我对正确安装依赖项并不是很彻底。所以我不得不创建一个全新的虚拟 python 安装。

注意: 这适用于 python 3.5 或更高版本。 另外,我会让你明确说明什么 python 安装将创建这个环境。据我所知,没有充分的理由这样做。

Windows

  1. (可选)查找为您安装 python 的位置。
    启动 Windows 命令提示符。
    C:\Users\H>python
    import sys, os
    os.path.dirname(sys.executable)
    C:\Users\H\AppData\Local\Programs\Python\Python36
    因此,我的 python 安装在 C:\Users\H\AppData\Local\Programs\Python\Python36\python
  2. 为新的虚拟环境准备一个地方。
    我在我的主目录中创建了一个名为“venvs”的文件夹。
    C:\Users\H\venvs
  3. 创建新的虚拟环境。我将命名我的“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
  4. 激活新的虚拟环境
    C:\用户\H>C:\Users\H\venvs\env1\Scripts\activate
  5. 安装依赖项
    (env1) C:\Users\H>python -m pip install docutils pygments pypiwin32 kivy_deps.sdl2==0.1.22 kivy_deps.glew==0.1.12
  6. 安装 kivy
    (env1) C:\Users\H>python -m pip install kivy==1.11.1
  7. PyCharm
    如果您使用的是 PyCharm,请转到文件>设置
    从设置菜单项目>项目解释器
    点击齿轮>添加
    在“添加 Python 解释器”菜单中选择“现有环境”,然后将解释器设置为新虚拟环境的位置。
    我的是 C:\Users\H\venvs\env1\Scripts\python.exe。
    点击确定。 在设置菜单中点击应用。点击 OK 后,您的脚本应该能够查看 TIFF 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多