.gif 图像作为源代码在 Windows kivy 程序中运行良好。通过 kivy Launcher 运行显示 gif 图像的背景

Posted

技术标签:

【中文标题】.gif 图像作为源代码在 Windows kivy 程序中运行良好。通过 kivy Launcher 运行显示 gif 图像的背景【英文标题】:.gif Image as source runs nicely in Windows kivy program . Running via kivy Launcher shows background of gif image 【发布时间】:2014-05-28 03:32:27 【问题描述】:

我正在运行一个程序,我在小部件中显示 .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

...

【问题讨论】:

【参考方案1】:

首先确保你打包了 pil/pillow [只是在构建 apk 时将其添加到其中一个要求中] 用于 gif 加载,否则将使用一个对于 android 非常慢的纯 python 加载器,其次请详细说明你的方框是什么意思?

更新:您更新后的示例显示您正在使用 AsyncImage 和本地源,Async Image 被用于与本地源的远程 url 一起使用,您可以使用 Image 类。

第二:如果你得到的是白色背景而不是图像,那么你给了它错误的路径。确保您的图像存在于目录中,或者您的目录存在于启动器的正确位置。

更新 3:如前所述,问题在于使用 pil 的 gif 图像加载器。并非所有图像都可以使用它。它适用于您的桌面,因为没有安装 pil,而是使用纯 python gif 加载器。由于速度问题,此加载程序无法在 android 上使用。

一种解决方法是使用 gimp 打开并保存图像。那么它应该可以正常工作。 另一种方法是贡献和修复:使用 pil 用于 gif 的加载器......(我必须警告网络上有很多不同的 gif,每个都有自己的细微变化。确保一个作品会导致其他作品被破坏。)

要在桌面上重现您的问题,只需安装枕头。

使用 gif 制作动画时可能会出现许多伪影,我建议您在 .zip 中使用 images(png/jpg...) 并将其设置为源。这样您就可以摆脱伪影了。

请确保 Image 类提供的 gif 或 .zip 动画仅用于不需要大量控制动画的情况。就像不会改变的静态动画一样。

如果您的动画需要超出此范围,那么您应该通过在 Atlas 中加载精灵表来手动管理动画。

【讨论】:

1.我目前正在使用 kivy 启动器 2 运行代码。方形框是指图像的背景,默认情况下,每个图像都是方形的,我们通常会删除背景,以便不显示图像背景框。如果不清楚我将尝试进一步详细说明。 3. 我首先在按钮中使用此动画(请参阅我刚刚在我的问题中添加的 .kv 代码) 背景是指包含任何图像的图像+背景正方形(默认情况下,每个图像都包含在一个正方形框中)。路径完全正确 基本上我需要图像具有透明背景。 Windows 上的相同代码显示具有透明背景的图像,但在具有 kivy 启动器的 android 上显示具有闪烁背景的图像 啊,这就是 gif 解码器的问题。网络上有很多种类的 gif,而 gif 解码器并不适用于所有类型。我建议您在 .zip 中使用图像列表...jpg/png。但是,如果它可以在您的桌面上运行而不是在您的手机上运行,​​那么还有其他问题。确保您使用的是最新版本的 kivy 启动器。 是的,它可以在我的桌面上完美运行,但不能在移动设备上运行 :) ...我正在使用 kivy 启动器,它已更新为可与最新的 1.8.0 一起使用,并且是最新的。当你说压缩包中的图片时,我真的不知道如何为那个 gif 找到相同的 png ...【参考方案2】:

我知道这个响应有点延迟,但我最近遇到了这些问题,并决定更改对绝对路径文件的访问。

原因是 Android/ios 路径管理器与桌面不同。在桌面上,我们可以使用相对路径为我们获取当前路径和图片文件的路径,但是在android/Ios上,我们应该使用绝对路径 > 找到我们的图像或我们想要使用的任何文件的路径。

Path to files in kivy app not valid after building with buildozer

【讨论】:

以上是关于.gif 图像作为源代码在 Windows kivy 程序中运行良好。通过 kivy Launcher 运行显示 gif 图像的背景的主要内容,如果未能解决你的问题,请参考以下文章

如何在延迟加载期间在图像占位符上显示“加载”gif图像

重新启动动画 GIF 作为背景图像

在 Windows Phone 8.1 上播放 GIF

从一组 jpeg 图像创建动画 gif

使用 Glide 显示 GIF 文件(图像加载和缓存库)

使用javascript裁剪GIF图像而不会丢失动画[重复]