在Windows Kivy程序中.gif图像作为源正常运行,通过Kivy启动器运行时显示gif图像的背景
我正在运行一个程序,在一个小部件里显示一个.gif格式的图片,效果很好。不过,当我用kivy launcher运行这个应用时,这个.gif图片周围出现了一个方框,即使这个图片本身是没有背景的。
有没有人知道,为什么在安卓和Windows上表现得不一样呢?
下面是我使用.gif图片的.kv代码示例。我把这个.gif图片当作一个按钮来用。
<ButImage@ButtonBehavior+AsyncImage>
canvas.before:
Color:
rgb: (0, 0, 1)
PushMatrix
Rotate:
axis: 0,0,1
angle: 20
origin: self.center
source: "images/butterflybluex.gif"
canvas.after:
PopMatrix
...
2 个回答
我知道这个回复有点晚,但我最近遇到了这些问题,所以决定把文件的访问方式改成绝对路径。
原因是,Android和iOS的路径管理和电脑上是不同的。在电脑上,我们可以使用相对路径,这样可以自动获取当前路径和图片文件的路径,但在Android和iOS上,我们需要使用绝对路径来找到我们想用的图片或其他文件的路径。
首先,确保你在打包apk的时候把pil/pillow加上去,这样才能加载gif图片。否则,安卓会使用一个很慢的纯Python加载器。其次,请详细说明你说的“方框”是什么意思?
更新:你更新的例子显示你在使用AsyncImage并且是本地资源。AsyncImage是用来处理远程网址的,对于本地资源,你可以直接使用Image
类。
第二:如果你看到的是白色背景而不是你想要的图片,那说明你给的路径不对。确保你的图片在正确的文件夹里,或者你的文件夹在启动器的正确位置。
更新3:之前提到的问题是关于使用pil加载gif图片的。并不是所有的图片都能用它。你在电脑上能用是因为没有安装pil,而是用的一个纯Python的gif加载器。这个加载器在安卓上用不了,因为速度太慢。
一个解决办法是用gimp打开并保存图片,这样应该就能正常工作了。另一个办法是参与修复:使用pil的gif加载器……我得提醒你,网上有很多不同的gif,每个都有些许不同。确保一个能用可能会导致其他的不能用。
要在电脑上重现你的问题,只需安装pillow。
使用gif做动画时可能会出现很多问题,我建议你使用图片(png/jpg等)放在一个.zip
文件里,然后把这个作为资源。这样可以避免很多问题。
请确保通过Image类提供的gif或.zip动画,只在你不需要太多控制动画的情况下使用。比如说静态动画,不会变化的那种。
如果你的动画需求超出了这个范围,那么你应该手动管理动画,加载一个精灵图集(sprite sheet)到一个Atlas里。