Android 能够生成 PNG 而无需显示之前的图表的图表库
Android chart library that's able to generate a PNG without showing the chart before that
让我们从我为什么要这样做开始:
我公司目前正在进行的项目涉及到让我们客户的一名员工去世界尽头的可能性,在完全无法连接到移动网络的情况下,随身携带一台便携式打印机,并打印一份从他的平板电脑报告。我们目前已经以这种方式打印了一份工作报告,但他们添加了一些细节导致了很多麻烦,这就是我来这里的原因,我需要在 Jasper 报告的末尾放置 3 个图表。
在 Web 应用程序中这将非常容易,因为 Jasper 本身提供此功能,但由于它是一个移动项目,我们尝试使用 PDFReporter。 API 从 .jrxml 文件生成 PDF,但它不支持 Jasper 的每一个功能,图表就是其中之一。在网上搜索我发现我们可以将图表导出为 PNG,然后将其添加到报告中,这将与 PDFReporter 一起使用。
从今天早上 8 点开始,我花了一整天的时间搜索和测试不同的图表生成 API,只是为了发现,到目前为止,100% 的 android APIs 旨在直接在您在 activity 中指定的视图上生成图表,但这对我根本不起作用。
我也测试了一些 Java APIs,但也有一个问题,因为它们中的大多数使用 java.awt 资源来处理图像,并且那个包是不包含在 android 的 SDK 中,也不支持它(通过将 JFreeChart 添加到我的项目中发现,这使我的构建需要大约 15 分钟,并最终因 OOM 错误而失败)。
所以我需要帮助的是:是否有一个 API 我可以直接在移动项目上使用,无需任何连接,生成饼图作为 PNG 而无需在查看然后获取图像?
我只想说清楚,我不是 100% 确定我上面所说的大部分事情,除了 PDFReporter 的限制,这些都已经确认,所以请任何类型的帮助将不胜感激,即使是一点点 "that's not how it works" 也会有所帮助。
如果您至少花时间阅读它,请提前致谢:)
我不确定您为什么说“...直接在您在 activity 上指定的视图上生成图表,但这对我根本不起作用”。您在 Android 应用程序中看到的所有内容都在某个视图中(在您的情况下,它可能是一个 ImageView)。
您只想在内存中将图表生成为 PNG 格式并存储或进一步操作吗?在这种情况下,您可以先使用您选择的 API 在隐藏的 ImageView 中生成它,然后使用 ImageView.getDrawable() 等提取它。假设 API 隐藏视图没有问题。也许 this 有帮助
让我们从我为什么要这样做开始: 我公司目前正在进行的项目涉及到让我们客户的一名员工去世界尽头的可能性,在完全无法连接到移动网络的情况下,随身携带一台便携式打印机,并打印一份从他的平板电脑报告。我们目前已经以这种方式打印了一份工作报告,但他们添加了一些细节导致了很多麻烦,这就是我来这里的原因,我需要在 Jasper 报告的末尾放置 3 个图表。
在 Web 应用程序中这将非常容易,因为 Jasper 本身提供此功能,但由于它是一个移动项目,我们尝试使用 PDFReporter。 API 从 .jrxml 文件生成 PDF,但它不支持 Jasper 的每一个功能,图表就是其中之一。在网上搜索我发现我们可以将图表导出为 PNG,然后将其添加到报告中,这将与 PDFReporter 一起使用。
从今天早上 8 点开始,我花了一整天的时间搜索和测试不同的图表生成 API,只是为了发现,到目前为止,100% 的 android APIs 旨在直接在您在 activity 中指定的视图上生成图表,但这对我根本不起作用。
我也测试了一些 Java APIs,但也有一个问题,因为它们中的大多数使用 java.awt 资源来处理图像,并且那个包是不包含在 android 的 SDK 中,也不支持它(通过将 JFreeChart 添加到我的项目中发现,这使我的构建需要大约 15 分钟,并最终因 OOM 错误而失败)。
所以我需要帮助的是:是否有一个 API 我可以直接在移动项目上使用,无需任何连接,生成饼图作为 PNG 而无需在查看然后获取图像?
我只想说清楚,我不是 100% 确定我上面所说的大部分事情,除了 PDFReporter 的限制,这些都已经确认,所以请任何类型的帮助将不胜感激,即使是一点点 "that's not how it works" 也会有所帮助。
如果您至少花时间阅读它,请提前致谢:)
我不确定您为什么说“...直接在您在 activity 上指定的视图上生成图表,但这对我根本不起作用”。您在 Android 应用程序中看到的所有内容都在某个视图中(在您的情况下,它可能是一个 ImageView)。
您只想在内存中将图表生成为 PNG 格式并存储或进一步操作吗?在这种情况下,您可以先使用您选择的 API 在隐藏的 ImageView 中生成它,然后使用 ImageView.getDrawable() 等提取它。假设 API 隐藏视图没有问题。也许 this 有帮助