无法在 Kivy 中查看 tiff 图像
Cannot view tiff images in Kivy
问题
我可以在 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
- 我是 运行 通过 PyCharm 在 Windows 7
- 我有 sdl2_image 版本 2.0.2 build 0。根据 sdl2_image 页面,sdl2_image 从版本 1.2.5 开始支持 tiff。
- 我有 libtiff 版本 4.0.9
- 将文件扩展名从“.tif”更改为“.tiff”
我想问你的问题
是我做错了什么,还是 Kivy 不支持 TIFF 格式?
您需要创建正确的安装
我使用 anaconda 来安装 kivy,但我并没有完全正确地安装依赖项。所以我不得不创建一个新的虚拟 python 安装。
注意:
这适用于 python 版本 3.5 或更高版本。
此外,我将让您明确说明 python 安装将创建此环境的内容。据我所知,没有充分的理由这样做。
Windows
- (可选)查找 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
- 为您的新虚拟环境准备一个地方。
我在主目录中创建了一个名为 "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 -m pip install 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 解释器菜单 select 'Existing environment' 中,然后将解释器设置为新虚拟环境的位置。
我的是 C:\Users\H\venvs \env1\Scripts\python.exe。
点击确定。
在设置菜单中点击应用。点击确定后,您的脚本应该能够查看 TIFF 文件。
问题
我可以在 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
- 我是 运行 通过 PyCharm 在 Windows 7
- 我有 sdl2_image 版本 2.0.2 build 0。根据 sdl2_image 页面,sdl2_image 从版本 1.2.5 开始支持 tiff。
- 我有 libtiff 版本 4.0.9
- 将文件扩展名从“.tif”更改为“.tiff”
我想问你的问题
是我做错了什么,还是 Kivy 不支持 TIFF 格式?
您需要创建正确的安装
我使用 anaconda 来安装 kivy,但我并没有完全正确地安装依赖项。所以我不得不创建一个新的虚拟 python 安装。
注意: 这适用于 python 版本 3.5 或更高版本。 此外,我将让您明确说明 python 安装将创建此环境的内容。据我所知,没有充分的理由这样做。
Windows
- (可选)查找 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 - 为您的新虚拟环境准备一个地方。
我在主目录中创建了一个名为 "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 -m pip install 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 解释器菜单 select 'Existing environment' 中,然后将解释器设置为新虚拟环境的位置。
我的是 C:\Users\H\venvs \env1\Scripts\python.exe。
点击确定。 在设置菜单中点击应用。点击确定后,您的脚本应该能够查看 TIFF 文件。