我想从Java动态创建一些图像并将其保存到文件中。 正如我在各种教程中所读到的,我需要使用BufferedImage。
但是,BufferedImage构造函数要求将height和width作为参数。但我不知道我的图像的最终尺寸。我应该如何创建一个大小未知的图像?
有两个明显的策略:
你如何处理这个问题?
答案 0 :(得分:2)
你刚刚遇到太空与时间问题。我想要制作一个非常大的图像10000x10000的第一个策略,简单的原因是你说的第二种方法涉及大量的矩阵副本,你可以不惜一切代价避免它。
此外,在充分了解图像大小的情况下,您可以进一步优化10000 x 10000的值,最初为1000x1000。如果图像看起来超过这个,请将其翻倍,如2000 x 2000并将旧版本复制到新版本,并在图像展开时继续执行此操作。这更像是着名的{{1}中使用的经过验证的策略}
通过这种方式,你间接地弥合了时间与空间的权衡。是的,你必须每次计算界限,但对我来说这看起来不是一项大任务,可以在O(1)时间内完成。
答案 1 :(得分:0)
当然我们不知道你的问题的具体细节,但一个简单的方法可能是这样的:你建立你的图像的某种模型:哪个形状在哪里以及它有多大。从那以后你应该能够计算出整个图像的尺寸。