gpt4 book ai didi

android - 处理绘图/绘画/保存多个位图

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:12 28 4
gpt4 key购买 nike

目标:

我想在 pdf 位图上绘制/书写/绘画并将它们保存在一起,以便我可以通过电子邮件发送给他们。

详细信息:

我有多个 Pdf包含 5-20 的文件每个页面,现在我正在从 pdfs 中提取位图并将它们 fragment 加载到 ViewPager 中,我可以在其中滑动并书写/绘画或任何我想要的东西。要保存/恢复位图的当前状态,我正在使用 onSaveInstanceState .这样我就可以在来回滑动时检索位图的最后阶段。

像这样:

@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable("Bitmap", bitmap);
}

问题:

用户按下发送电子邮件按钮,我应该能够保存所有图像,无论他在哪个页面,即他已经编辑了第 5 到 10 页现在他在第 10 页并按下发送按钮,我应该能够检索所有编辑过的图像。

问题 2:

正如我所说的图像数量大约为 5-20,将状态保存在 onSaveInstanceState 中效果很好,但它不断增加 ram 中的应用程序内存,并且应用程序在第 10 个图像崩溃,应用程序大小变为 150Mbs .

但将图像保存为 onSaveInstanceState 中的 bundle 也是必要的,因为它有助于在用户来回滑动时更快地加载图像。

So I was thinking is there any way we can create a custom bundle class where we can write the image to disk after say 5 pages scrolled and clears the memory and read it back from disk to memory when user is scrolling back? does this sound any reasonable?

我尝试过的:

由于位图是在单独的 fragment 中加载的,所以我尝试将位图保存到外部存储中 OnDestroy , 但由于将位图保存到磁盘不是一项小任务,虽然我使用 AsyncTask 需要时间。但是当用户在 fragment 之间快速滑动时,然后将位图保存在 OnDestroy 中似乎不是一种方便的方式。

这就是我问这个问题的原因,也许您对情况有更好的了解,可以帮助我以更方便的方式实现这一目标。

那么你打算如何处理这种情况?

注意:

如果您无法理解情况并需要更多信息,请给我留言,我会更新问题。

谢谢

最佳答案

让我描述一下我现在如何看待这个问题的解决方案。

应该有一个服务,它接受一个带有一些id(对原始位图的所有修改都相同)的edited位图,将它添加到队列,然后将该队列的每个项目持久保存到外部存储。它具有有限的 Executor 实例来执行该任务(它们可能只是 Runnable)并且 Service 创建一个 HashMap 其中将任务的 Future 映射到位图标识符。因此,当新的 Bitmap 出现时,Service 检查 map 并替换等待任务(具有相同的原始位图)(如果存在)。

您可以从 FragmentStatePagerAdapterdestroyItem 拦截器向此 Service 发送任务。

因此,当用户点击保存按钮时,您还应该将所有已编辑的位图发送到此 Service 并等待完成。

关于android - 处理绘图/绘画/保存多个位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40149370/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com