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

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

...

【问题讨论】:

    标签: android python image kivy


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多