我正在运行一个程序,我在小部件中显示 .gif 图像,它运行得非常好,但是当我使用 kivy 启动器运行这个应用程序时,即使图像没有背景,.gif 图像也带有一个方框。
任何人都有任何想法,为什么这在 android 和 windows 上表现不同。
请参阅下面的 .kv 代码作为我如何使用 .gif 图像的示例。我将此 .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
...
最佳答案
首先确保你打包了 pil/pillow [在构建 apk 时将它添加到一个要求中] 用于 gif 加载,否则将使用一个对 android 来说非常慢的纯 python 加载器,其次请详细说明你的意思方盒?
更新:您更新的示例表明您正在将 AsyncImage 与本地源一起使用,Async Image 可与本地源的远程 url 一起使用,您只需使用 Image
类即可。
第二:如果你得到的是白色背景而不是图像,那么你给它的路径是错误的。确保您的图像存在于目录中,或者您的目录存在于启动器上的正确位置。
更新 3:前面提到的问题是使用 pil 的 gif 图像加载器。并非所有图像都适用于它。它适用于您的桌面,因为未安装 pil 而是使用纯 python gif 加载器。由于速度问题,此加载程序无法在 android 上使用。
一种解决方法是使用 gimp 打开并保存图像。它应该可以正常工作。
另一种方法是贡献和修复:加载程序使用 pil 来制作 gif ......(我必须警告网络上有很多不同的 gif,每个都有自己的细微变化。确保一个作品会导致其他人被破坏。)
要在桌面上重现您的问题,只需安装枕头。
使用 gif 制作动画时会出现许多工件,我建议您在 .zip
中使用图像(png/jpg...)并将其设置为源。这样你就可以摆脱工件。
请确保 Image 类提供的 gif 或 .zip 动画仅用于不需要大量控制动画的情况。就像不变的静态动画一样。
如果您的动画需要超出此范围,那么您应该通过在 Atlas 中加载 Sprite 表来手动管理您的动画。
关于android - .gif 图像作为源在 Windows kivy 程序中运行良好。通过 kivy Launcher 运行显示 gif 图像的背景,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23055596/