【问题标题】:Java - From SVG to PNG programmaticallyJava - 以编程方式从 SVG 到 PNG
【发布时间】:2018-01-21 18:53:03
【问题描述】:

我正在使用 LibGDX 库(来自 badlogicgames)创建游戏,但我对自己的 sprites 产生了一些疑问。

为了支持不同的屏幕尺寸,我们通常会创建 4 或 6 个不同尺寸的图像。我想知道使用像 .SVG 文件这样的矢量图像是否有用。

以编程方式获取 SVG 文件,获取屏幕尺寸,然后根据屏幕尺寸创建适当的 PNG 文件是否明智?

如果唯一的问题是性能,那么差异是否太大?也许在应用程序开始时创建所有 PNG 图像需要 3 或 4 秒,但对于正向图形会更好。

我听说过 batik 可以实现这一点,有人试过吗?

有没有人有这方面的经验可以帮助我?

【问题讨论】:

  • Android 支持库现在支持矢量图像。该库缓存图像,因此它们只转换一次。文档确实指出,由于内存问题,它只能用于相对较小的图像。
  • @lionscribe Android 支持库不支持 SVG 文件。它支持 VectorDrawables,它们是不一样的。 SVG 文件的子集可以转换为 VectorDrawable 文件。
  • 正确。我想要的最重要的一点是注意到的内存问题。全尺寸图像会占用您的内存。一个简单的想法是,您在第一次运行时将图像文件保存到缓存文件中,这样您通常不必再次创建它们,内存中也没有大图像。
  • 您有在应用程序缓存中保存 PNG 文件的教程吗?

标签: java android svg png batik


【解决方案1】:

Batik 适用于一般 Java 应用程序。但是我不相信它支持 Android,因为它使用 Android 没有的标准 Java2D 方法。

不过,有一些适用于 Android 的库可以让您渲染 SVG 文件:

免责声明:我是 AndroidSVG 的作者

【讨论】:

  • 所以我将 SVG 放在我的资产文件夹中,然后使用 AndroidSVG 将它们转换为 PNG 文件,然后将它们保存在游戏的缓存中。好吧,为了结束辩论,你有在缓存中保存 PNG 文件的教程吗?非常感谢!
  • AndroidSVG web site 上有一个如何从 SVG 创建位图的示例。剩下的唯一步骤就是保存为 PNG 格式。
  • 如何在 Android Studio 的 libGDX 项目中实现 AndroidSVG?
  • 您应该能够像导入任何其他库 JAR 一样导入它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-09
  • 2020-03-05
  • 2013-02-09
  • 1970-01-01
  • 2012-09-23
  • 2013-05-29
  • 1970-01-01
相关资源
最近更新 更多